Perl 参考取消引用 @var1 = [($a, $b)]
Perl reference Dereferencing for @var1 = [($a, $b)]
我在 perl 中有以下表达式
@var1 = [($a, $b)]
谁能帮我推导出存储在 var1 中的值。
@var1 是一个数组的数组。所以它的唯一内容是另一个包含两个值 $a 和 $b 的数组。
$a2 = $var1[0][0];
$b2 = $var1[0][1];
@var1
是一个包含单个元素的数组。该单个元素 ($var[0]
) 包含对另一个数组的引用。该引用数组有两个元素,包含变量 $a
和 $b
.
的值
所以 $var[0]
包含一个数组引用。要从数组引用中获取引用数组的元素,我们使用查找箭头 ->
.
print $var[0]->[0]; # The first element in the referenced array
print $var[0]->[1]; # The second element in the referenced array
我们可以在这里使用一种额外的语法细节。当我们有两组仅由一个查找箭头分隔的查找括号时,我们可以省略该箭头。所以表达式变成了。
print $var[0][0];
print $var[0][1];
关于您的代码的两点:
$a
和 $b
是用于排序子程序的特殊变量。在其他地方使用它们是个坏主意。
- 在您原来的赋值表达式 (
@var1 = [($a, $b)]
) 中,括号是不必要的。只有 @var1 = [$a, $b]
会做同样的事情。
我在 perl 中有以下表达式
@var1 = [($a, $b)]
谁能帮我推导出存储在 var1 中的值。
@var1 是一个数组的数组。所以它的唯一内容是另一个包含两个值 $a 和 $b 的数组。
$a2 = $var1[0][0];
$b2 = $var1[0][1];
@var1
是一个包含单个元素的数组。该单个元素 ($var[0]
) 包含对另一个数组的引用。该引用数组有两个元素,包含变量 $a
和 $b
.
所以 $var[0]
包含一个数组引用。要从数组引用中获取引用数组的元素,我们使用查找箭头 ->
.
print $var[0]->[0]; # The first element in the referenced array
print $var[0]->[1]; # The second element in the referenced array
我们可以在这里使用一种额外的语法细节。当我们有两组仅由一个查找箭头分隔的查找括号时,我们可以省略该箭头。所以表达式变成了。
print $var[0][0];
print $var[0][1];
关于您的代码的两点:
$a
和$b
是用于排序子程序的特殊变量。在其他地方使用它们是个坏主意。- 在您原来的赋值表达式 (
@var1 = [($a, $b)]
) 中,括号是不必要的。只有@var1 = [$a, $b]
会做同样的事情。