【问题标题】:Perl hash referencingPerl 哈希引用
【发布时间】:2016-06-02 21:49:44
【问题描述】:

如果有人可以帮助我,我将不胜感激。目前我正在努力将一些旧的 Perl 脚本转换为 C#,但在此过程中,我不断遇到以下语法的代码:

$w{$x}->{y} = $z

我了解 Perl 中散列的基础知识,但总的来说我对 Perl 还很陌生,我在任何地方都找不到这样的示例。

这只是保存对哈希中键值的引用吗?

【问题讨论】:

  • 应该指出{$x}{y}之间的箭头是完全没有必要的。除了(IMO)可读性之外,它不会伤害任何东西。如果你忽略它,这个表达式突然看起来更像是一个你可能更熟悉的二维结构,并且更容易看出%h 实际上是一个散列的散列。 $w{$x}{y} = $z
  • 感谢 Paul 的澄清,关于可读性,我同意你的看法,哈哈。这让我绊倒了一段时间

标签: c# perl hash reference


【解决方案1】:

向后工作,它将$z 的值分配给哈希引用的键y,其中该引用分配给名为%w 的哈希的键$x

perl -wMstrict -MData::Dumper -E 'my %h; my $x=1;  $h{$x}->{y}=3; print  Dumper \%h;'

$VAR1 = {
          '1' => {
                   'y' => 3
                 }
        };

在 Perl 中,列表类型的数据结构的值只能是标量项(单个实体),因此哈希的第一层下的所有内容都必须是引用。引用只是一个标量值,它包含一个指向相关项目的“指针”。

【讨论】:

    【解决方案2】:

    它表示您有一个哈希 %w,其中包含一个密钥 $x。键 $x 后面的值是对另一个哈希的引用。因此,您可以使用 -> 来访问密钥 y。键y的值设置为$z的值。

    所以它看起来像:

    %w = ($x => {'y' => $z})
    

    注意:{} 表示哈希引用。 (基本上是一个指向哈希的指针)。

    【讨论】:

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