我通过这样做在Perl中声明了一个哈希:
my %hash = ();
我继续向哈希添加元素。有时,$hash{$x}
未定义,这意味着它可能是null
。因此,当我尝试打印它时,我什么也得不到。如果未定义条目0
,我希望看到$x
。有人能告诉我该怎么做?如何最初将哈希元素初始化为0
?
答案 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 数组。