Perl是否可以访问哈希值,如果它只有一个键,而不使用键值?
让我们说,%h只是'key_name' => 'value'.
我可以访问'value'唯一的通道$h->{key_name}吗?
或者,可以在'value'没有密钥名称的情况下访问它吗?
Eri*_*rom 13
该值内置函数散列将返回所有的散列值的列表.您可以使用它来获取或设置的任何值与别名列表构造,如foreach,map和grep:
for my $value (values %hash) {
say $value; # prints the value
$value++; # adds one to the value
}
Run Code Online (Sandbox Code Playgroud)
或者您可以将值存储在数组中:
my @vals = values %hash;
Run Code Online (Sandbox Code Playgroud)
返回值的顺序实际上是随机的,但它与相应keys函数的顺序相同.
散列本身是列表,因此您可以访问列表上下文中散列的任何奇数元素以获取该值,但此方法的效率较低,因为整个散列需要拆分以形成列表,而不仅仅是值.
上述技术适用于任何大小的哈希.如果您只有一个键/值对:
my %hash = qw(foo bar);
Run Code Online (Sandbox Code Playgroud)
然后他们减少到:
{my ($x) = values %hash; say $x} # bar
{my (undef, $x) = %hash; say $x} # bar
{my $x = (values %hash)[0]; say $x} # bar
{my $x = (%hash)[1]; say $x} # bar
Run Code Online (Sandbox Code Playgroud)