[英]In Perl, how do you access a value from a reference in an array of hashrefs?
[英]How do you reference a list in Perl?
我读到了有关scalars
arrays
和list
。 我不确定list
是什么意思。 例如, (5, apple, $x, 3.14)
是一个list
,但实际引用该列表的变量是什么?
列表只是初始化数组的一种方式还是已知的数据结构?
你如何引用Perl中的列表?
与其他任何事情一样 - 使用引用运算符\\
。 见perlreftut和perlref 。
my $x;
\(5, 'apple', $x, 3.14)
表达式返回
(
\ 5,
\ "apple",
\ undef,
\ 3.14
)
哪个没用。
例如,(5,apple,$ x,3.14)是一个列表,但实际引用该列表的变量是什么?
空无一人。 这是一个匿名值。
并非每个值都需要一个变量来保存它 - 文字也是程序的重要组成部分。
列表只是初始化数组的一种方式还是已知的数据结构?
读取Perl数组与列表 。
Perl中有三种不同的基本数据结构。
哈希表:
my %employee = (
"A001" => "Albert",
"A002" => "Bob",
"B003" => "Gary",
);
print "$employee{A001}\n"; #Prints "Albert"
print "$employee{B003}\n"; #Prints "Gary"
阵列:
my @fruit = ("Apple", "Orange", "Banana");
print "$fruit[0]\n"; #Prints "Apple"
print "$fruit[2]\n"; #Prints "Banana"
标量:
my $age = "None of your business";
print "You're $age years old\n"; #Prints "You're None of your business years old
列表只是一个项目列表。 例如, @fruit
是一个数组 。 但是,我将我的数组设置为等于包含水果名称的列表 。
从技术上讲,列表是不可更改的,而数组是可以修改的数据结构。
for my $color ("red", "green", "blue") {
print "$color is an item from my list\n";
}
在上面,我的for
循环通过列表前进:
my @list = ("red", "green", "blue");
for my $color (@list) {
print "$color is a member of my array\n";
}
上面几乎是相同的代码,但现在我的for
循环通过数组前进。
在一个非常基础的层面上,我认为理解运营商的帮助。
这可以通过说出任何不是值的东西来概括,是运营商。
什么是列表运算符?
,
列表运算符如何工作?
列表运算符计算左侧的值,然后计算右侧的值。 如果右侧的值也有列表运算符,则运算符的关联性意味着评估将继续,直到不再出现列表运算符或行结束。
#!usr/bin/perl
use warnings;
use strict;
my @namedlist = 1, my @namedlist2 = 2;
print @namedlist , @namedlist2;
12
一旦理解了列表运算符,就可以处理问题的真正问题:
上下文
例如,打印耗材列出其参数的上下文。 它需要一个列表,而不是一个单数值,因此它提供了列表上下文。
现在我们知道[]
和{}
运算符是对匿名数组构造函数的引用,并分别引用匿名哈希构造函数,但我认为很少有人意识到在此之前只有列表构造函数运算符。 列表构造函数运算符是
()
为什么这很重要? 好吧,因为列表运算符,
不知道上下文。 它只是评估和丢弃,评估和丢弃。
通过使用列表构造函数()
包装列表运算符来提供上下文,现在列表构造函数捕获列表运算符的计算结果,以便它可以返回列表。
当然,您将使用赋值运算符=
将列表构造函数()
返回的新构造的列表分配给命名列表持有者。 如数组或哈希。
my @list = (one, 1, two, 2);
my %associatedlist = (three, 3, four, 4);
因此,列表是由列表构造函数捕获的一系列评估值,然后通常分配给命名列表持有者。
通过对列表构造函数[]
和{}
的引用的逆向工程,这是显而易见的。 两个对列表构造函数的引用之间存在差异,突出显示它们作为运算符的使用,可能是从早期使用类似运算符开始的?
必须通过使用对匿名数组构造函数[]
引用或对匿名散列构造函数{}
的引用来明确声明对列表构造函数的引用。
列表constructer ()
构造一个值列表,然后通常将其分配给命名数组或命名关联数组。 尽管赋值运算符=
不区分其左值和右值,但它只是尝试将权限分配给左侧,如果上下文不兼容或列表大小的长度不同,则会继续相应地将您的工作称为STDOUT。
useless use of constant in void context at roughly 1 foot from keyboard.pl
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.