【问题标题】:i don't understand @unordered{@array} in perl我不明白 perl 中的@unordered{@array}
【发布时间】:2014-04-17 14:40:54
【问题描述】:

我是一名没有经验的 Perl 程序员。我已经在阅读《Beginning Perl Curtis “Ovid” Poe 这本书了,但我对这段代码有疑问。

#!/usr/bin/perl
use strict;
use warnings;
use diagnostics;
my @array = ( 3, 4, 1, 4, 7, 7, 4, 1, 3, 8 );
my %unordered;
@unordered{@array} = undef;
foreach my $key (keys %unordered) {
print “Unordered: $key\n”;
}

@unordered{@array} = undef;

这段代码是什么意思? 谁能解释一下?

【问题讨论】:

    标签: perl


    【解决方案1】:
    @unordered{@array} = undef
    

    这称为hash slice。你可以阅读更多about it hereherehere。换句话说,它作用于哈希的多个键(这些键由@array 描述,在这种特殊情况下,它为每个键分配值undef)。

    【讨论】:

      【解决方案2】:

      我假设它是向您展示一些有关哈希键的信息。 您拥有@array,然后在您的哈希%unordered 中创建条目,其中数组中的值作为键而没有值。这发生在这一行:

      @unordered{@array} = undef;

      然后您遍历该哈希的所有键并打印它们。所以你可以看到有哪些键以及它们在散列中的顺序。 您可能会注意到,尽管数组中有多个值不止一次,但每个键只存在一次。这是因为散列的键总是唯一的。 您还可以看到键没有特定的顺序,因为哈希的键可以按实现喜欢的任何方式排序。

      【讨论】:

      • 数组 (1,3,4,7) 中的重复条目仅打印一次,因为它们仅在哈希中存在一次。所以代码过滤重复。
      【解决方案3】:

      是的,我明白你向我解释的所有内容。谢谢你的时间。

      但是为什么,首先我们用数字初始化一个数组,然后创建一个哈希(空白哈希),然后我们在哈希 %unordered 中创建条目,其中数组中的值作为键而没有值。

      在循环中,我们使用“%”(%unordered)。我们将数组“@array”更改为哈希“%unordered”,然后在循环中再次使用 %unordered。

      看起来有点奇怪

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-12-31
        • 2021-10-10
        • 2013-11-06
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多