Arrays 为什么打印perl数组会产生计数?
我有以下返回数组的函数:Arrays 为什么打印perl数组会产生计数?,arrays,perl,Arrays,Perl,我有以下返回数组的函数: sub getUsers() { @users[0] = 'test'; @users[1] = 'test2'; return @users; } @temp = getUsers(); $i = @temp; print "There are $i users"; 但当我打印出来时,它显示为数字2(数组的计数)。发生了什么?$i=是一个标量赋值,给出赋值标量上下文的右侧;当您在标量上下文中提到数组时,它将返回其长度。$i=是标量赋值,给
sub getUsers() {
@users[0] = 'test';
@users[1] = 'test2';
return @users;
}
@temp = getUsers();
$i = @temp;
print "There are $i users";
但当我打印出来时,它显示为数字
2
(数组的计数)。发生了什么?$i=
是一个标量赋值,给出赋值标量上下文的右侧;当您在标量上下文中提到数组时,它将返回其长度。$i=
是标量赋值,给出赋值标量上下文的右侧;在标量上下文中提到数组时,它将返回其长度。在标量上下文中使用数组时,数组将返回数组中的项数
从Perldoc开始
标量上下文中的列表赋值返回赋值右侧的表达式生成的元素数
当你说:
$i = @temp;
您正在获取一个列表并试图将其分配给标量变量。您正在标量上下文中使用该数组。这样,就得到了数组的大小。(不是最大的索引。这就是$#temp
将带给您的
您可以使用scalar
函数强制标量上下文中的数组,否则它可能不是:
`
打印“数组中有“.scalar@foo.”项\n”
print
函数可以获取时间列表,而不仅仅是单个字符串。然后它使用变量$,
的值加入数组
如果需要项目列表,请使用将列表合并为单个字符串:
print "There are " . scalar @foo . " items in the array\n";
print "They are " . join ( ", " $foo ) . ".\n";
在标量上下文中使用数组时,该数组返回数组中的项数 从Perldoc开始 标量上下文中的列表赋值返回赋值右侧的表达式生成的元素数 当你说:
$i = @temp;
您正在获取一个列表并试图将其分配给标量变量。您正在标量上下文中使用该数组。因此,您可以得到数组的大小。(不是最大的索引。$\temp
将得到此值
您可以使用scalar
函数强制标量上下文中的数组,否则它可能不是:
`
打印“数组中有“.scalar@foo.”项\n”
print
函数可以获取时间列表,而不仅仅是单个字符串。然后它使用变量$,
的值加入数组
如果需要项目列表,请使用将列表合并为单个字符串:
print "There are " . scalar @foo . " items in the array\n";
print "They are " . join ( ", " $foo ) . ".\n";
将一个标量值赋给数组,因此它在标量上下文中求值,在Perl中,这意味着给我数组的长度。@guy,这是向后得到的。:)这是将数组分配给标量值。@friedo Doh!诵读困难症再次发作…相关问题您希望它打印什么?看起来您需要UER的计数。而且,
@users[0]
现在应该是$users[0]
在赋值中。您将标量值赋给数组,因此它在标量上下文中求值,在Perl中,这意味着给我数组的长度。@squiguy,您得到的是向后的。:)这是将数组赋给标量值。@friedo Doh!诵读困难症再次发作…相关问题您希望它打印什么?看起来你想要的是乌尔伯爵。另外,@users[0]
现在应该是作业中的$users[0]
。$i=@temp代码>是void上下文中的标量赋值。您引用的段落不相关。Re“您正在获取一个列表并试图将其分配给一个标量变量。”不是真的。$i=@temp代码>。根据您的逻辑,$i=(5,6,7)当代码>实际分配7
$i=@temp代码>是void上下文中的标量赋值。您引用的段落不相关。Re“您正在获取一个列表并试图将其分配给一个标量变量。”不是真的。$i=@temp代码>。根据您的逻辑,$i=(5,6,7)代码>应在实际分配7
时分配3
。