gpt4 book ai didi

hashmap - Perl 哈希没有按预期工作

转载 作者:行者123 更新时间:2023-12-01 13:20:43 24 4
gpt4 key购买 nike

#!/usr/bin/perl

sub f { {
a => 1,
b => 2
} }

sub g { {
%{f()},
c => 3,
d => 4,
} }

use Data::Dumper;
print Dumper g();

以上代码输出

$VAR1 = 'a';
$VAR2 = 1;
$VAR3 = 'b';
$VAR4 = 2;
$VAR5 = 'c';
$VAR6 = 3;
$VAR7 = 'd';
$VAR8 = 4;

尽管在我的理解中它应该输出

$VAR1 = {
'a' => 1,
'c' => 3,
'b' => 2,
'd' => 4
};

我的误解是什么?

最佳答案

问题是一对大括号在 Perl 中是不明确的,可能是 block 或匿名散列

由于 g 中的散列内容(请使用更好的名称)perl 假定您正在编写一个代码块,它只是一个标量值列表

像这样让它更明确,您的代码将按预期运行

use strict;
use warnings 'all';

sub foo {
{
a => 1,
b => 2,
}
}

sub bar {
my $href = {
%{ foo() },
c => 3,
d => 4,
}
}

use Data::Dump;
dd bar();

输出

{ a => 1, b => 2, c => 3, d => 4 }

关于hashmap - Perl 哈希没有按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51613242/

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