gpt4 book ai didi

arrays - 如何在 Perl 中有效地从引用的散列和键数组中获取值数组?

转载 作者:行者123 更新时间:2023-12-02 09:15:28 27 4
gpt4 key购买 nike

我当前有一个引用的哈希和该哈希包含的键数组。我想获取与我的键数组相对应的值数组。

我知道如何在多行中执行此操作:

# 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/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com