-1

我知道@array[0,2,6]是一个具有多个值的数组。

而且我相信这$scalar=3是一个具有单个标量值的单个变量。

然而,什么是$array[3, 4]?它是具有两个值的标量变量吗?

4

2 回答 2

10

@array[0,2,6](或更一般地@array[ EXPR ])是一个数组 slice。(参见perldata)索引表达式在列表上下文中进行评估,返回的列表被视为索引列表,并且由这些索引标识的元素由切片返回。

$array[ EXPR ]是一个数组元素。索引表达式在标量上下文中求值,返回值被视为一个索引,并返回由该索引标识的元素。

代码在标量上下文中3,4求值- 请参阅perlop4中的逗号运算符- 所以除了 void context 警告之外,它是相同的。$array[3,4]$array[4]

于 2011-11-05T02:19:57.903 回答
5

试试看:

perl -E '@ar = (10,11,12,42);say $ar[1,2,3]'
42

1,2,3 是一个列表。在标量上下文中,它返回其最后一个成员。

于 2011-11-05T02:03:50.340 回答