作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我当前有一个引用的哈希和该哈希包含的键数组。我想获取与我的键数组相对应的值数组。
我知道如何在多行中执行此操作:
# Getting hash reference and array of keys.
my $hashRef = {
one => 'foo',
two => 'bar',
three => 'baz'
};
my @keys = ('one', 'three');
# Getting corresponding array of values.
my @values;
foreach my $key (@keys) {
push @values, $hashRef->{$key};
}
但是,我相信一定有一种更好的不使用循环的方法。但不幸的是我就是想不出来。我怎样才能高效地从引用的哈希中获取值数组和键数组;如果可能的话,最好在一行中?
最佳答案
很容易:
my @values = @$hashRef{@keys};
或者,在 Perl 5.24+ 上:
my @values = $hashRef->@{@keys};
或者,在 Perl 5.20+ 上启用一些附加功能:
use feature qw(postderef);
no warnings qw(experimental::postderef);
my @values = $hashRef->@{@keys};
这利用了这样一个事实:您可以使用 @hash{LIST}
语法获取 %hash
的多个键(“切片”)的值。您只需首先取消引用它即可。请参阅perldoc了解更多信息。
关于arrays - 如何在 Perl 中有效地从引用的散列和键数组中获取值数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47582641/
我是一名优秀的程序员,十分优秀!