小编Smy*_*ers的帖子

来自函数的哈希返回的Perl哈希切片

纯粹的学术问题,我没有在这里看到禁止它们的说明(虽然我没有找到'学术'标签).

如果我有如下所示的现有哈希,我可以采用它的切片(?),如下所示:

my %hash = (one=>1, two=>2, three=>3, four=>4);
my ($two, $four) = @hash{'two','four'};
Run Code Online (Sandbox Code Playgroud)

如果从这样的示例函数返回哈希,有没有办法做到这一点?

sub get_number_text
{
    my %hash = (one=>1, two=>2, three=>3, four=>4);
    return %hash;
}
Run Code Online (Sandbox Code Playgroud)

一种有效的方法是:

my ($two, $four) = @{ { get_number_text() } }{'two', 'four'};
Run Code Online (Sandbox Code Playgroud)

据我所知,函数返回一个散列键/值列表,内部{}创建一个匿名散列/ ref,而@ {}使用引用将其"强制转换"为一个列表,即一个哈希切片,因为Perl知道参考哈希.(我对最后一点工作有点惊讶,但对Perl有更多的权力,等等)

但这是在一个表达式中写出那个公认的奇怪访问的最明确方式吗?

perl

5
推荐指数
1
解决办法
716
查看次数

标签 统计

perl ×1