【问题标题】:Perl reference Dereferencing for @var1 = [($a, $b)] [closed]@var1 = [($a, $b)] 的 Perl 引用取消引用 [关闭]
【发布时间】:2017-07-18 02:15:45
【问题描述】:

我在 perl 中有以下表达式

@var1 = [($a, $b)]

谁能帮助我尊重存储在 var1 中的值。

【问题讨论】:

  • 你为什么首先将数组引用分配给数组?

标签: arrays perl reference dereference


【解决方案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] 也会做同样的事情。

【讨论】:

  • 我以基本相同的第一句话开始我的回答...... :)
  • 我很想知道为什么这个答案遭到了反对。
【解决方案2】:

@var1 是一个数组的数组。所以它唯一的内容是另一个包含两个值的数组,$a 和 $b。

$a2 = $var1[0][0];
$b2 = $var1[0][1];

【讨论】:

    猜你喜欢
    • 2011-10-11
    • 2017-12-19
    • 1970-01-01
    • 2016-07-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多