|
本帖最后由 xiaoliu 于 2011-11-14 20:26 编辑
keys 函数会返回此hash 的所有keys,values 函数将返回所有的values。如果hash 中没有元素,则此函数将返回空列表:
my %hash = (“a”=>1, “b”=>2, “c”=>3);
my @k = keys %hash;
my@v = values %hash;
现在,@k 含有“a”, “b”, “c”,而@v 含有1, 2, 3,其顺序可能不同。记住,Perl 并不维护hash 中元素的顺序。但,其中keys
按照某种顺序存储,则其对应的values 也是这个顺序:如果“b”排在keys 的最后,则2 也排在values 的最后。如果“c”是
第一个,则3 也是第一个。这种论断是正确的,如果没有对keys 或values 做什么修改。如果添加了新元素到hash 中,Perl
会重新对它们进行排序,以便能更快速的访问它们。在标量context 中,这些函数返回hash 中元素的个数(key/value)。此
类操作不需要访问hash 的每一个元素,其效率是很高的:
my $count = keys %hash; #得到3,是指有3 个key/value 对
有时,你可能看到有人将hash 作为boolean(true/false)表达式来使用:
if(%hash){
print “That was a true value!\n”;
}
上述语句为true,当且仅当其至少含有一个key/value 对◆。一般,上述语句是说,“如果hash 非空… ”,但实际中很少这样
做。
◆其返回值为一个字符串,对于调试的用户有帮助。其看起来像“4/16”,但true 或者false 是由hash 的列表是否为空决定的。
|
|