【问题标题】:Dereferencing a hash value取消引用哈希值
【发布时间】:2012-05-28 11:43:55
【问题描述】:

这不起作用:

 my %y = ("lkj",34);
 my %i = ("lkj",66);
 my @e = (\%y, \%i);
 my $u = ${%{$e[0]}}{"lkj"};

但确实如此:

         my %u = %{$e[0]};
         print $u{"lkj"};

如果我不想输入额外的行,我该怎么办。

【问题讨论】:

    标签: perl hash reference


    【解决方案1】:

    您使用-> 运算符:

    $e[0]->{"lkj"}
    

    你可以对 arrayrefs 做类似的事情,它甚至可以链接:

    my $eref = \@e;
    print $eref->[0]->{"lkj"}
    

    作为奖励,您也可以使用数组引用的 {} 简写在一行中完成所有设置:

    my @e = ( { lkj => 34 }, { lkj => 66 } );
    

    【讨论】:

    • -> 在索引之间使用时可以隐含; $e[0]{lkj}$eref->[0]{lkj} 可以正常工作。
    猜你喜欢
    • 1970-01-01
    • 2011-10-11
    • 1970-01-01
    • 2014-05-08
    • 1970-01-01
    • 2011-02-27
    • 1970-01-01
    • 2018-02-25
    • 2016-06-17
    相关资源
    最近更新 更多