将哈希元素初始化为0

时间:2015-05-14 03:35:16

标签: perl hashcode perl-data-structures

我通过这样做在Perl中声明了一个哈希:

my %hash = ();

我继续向哈希添加元素。有时,$hash{$x}未定义,这意味着它可能是null。因此,当我尝试打印它时,我什么也得不到。如果未定义条目0,我希望看到$x。有人能告诉我该怎么做?如何最初将哈希元素初始化为0

4 个答案:

答案 0 :(得分:6)

使用defined-or operator //(适用于Perl 5.10及更高版本)时,可以在遇到未定义值时打印默认值,而不是尝试设置默认值。

在此示例中,当您打印哈希元素时,您要么打印元素,要么未定义,0

use 5.010;

say $hash{$x} // 0;

答案 1 :(得分:0)

没有非定义散列键的默认值

操作哈希的正确方法是测试你的密钥是否被定义,使用'defined'函数(参见perl defined

<RatingBar android:progressDrawable="@drawable/ratingbar_red"/>

答案 2 :(得分:0)

请注意,它不会测试是否定义了键,而是会使用存在的关键字测试键是否存在。一种测试,看该值是否已使用定义的关键字定义。

print "Exists\n"    if exists $hash{$key};
print "Defined\n"   if defined $hash{$key};
print "True\n"      if $hash{$key};

第一个测试密钥是否存在,  如果定义了值,则返回第二个  如果该值返回的是真值,则为第三。

答案 3 :(得分:0)

可以初始化散列。

my %hash = ();
@hash{@keys} = (0) x @keys;

这将创建一个散列,为每个键提供一个元素,然后将值设置为与键数组一样长的 0 数组。