gpt4 book ai didi

perl - 数组与列表引用问题

转载 作者:行者123 更新时间:2023-12-03 18:10:54 24 4
gpt4 key购买 nike

关于以下代码的两个问题:


%h1 = {
'key1' => ( 1, 2, 3 ),
'key2' => ( 4, 5, 6 )
};

%h2 = {
'key1' => [ 1, 2, 3 ],
'key2' => [ 4, 5, 6 ]
};

print $(@h1{'key2'})[1];

Q1 : h1 和 h2 有什么区别?请不要说“一个是列表的散列和数组的另一个散列”......相反,我想知道这在使用方面意味着什么。

Q2:为什么引用 $(@h1{'key2'})[1]在打印语句中没有编译?这是我的想法:我想访问与“key2”对应的数组/列表: @h1{'key2'} .然后我想访问该列表/数组中索引 1 处的标量: $(@h1{'key2'})[1] .为什么这是错误的?这个变量引用的东西令人困惑。

最佳答案

这些都不像你想象的那样工作。使用严格并始终使用警告。

%h1 = {
'key1' => ( 1, 2, 3 ),
'key2' => ( 4, 5, 6 )
};

您正在尝试将 hashref ( {} 构造) 分配给哈希。它被字符串化为标量并用作 %h1 中的键,值为 undef。此外,由于您使用的是列表 ( () 构造),它会变平并且您正在创建哈希:
%href = ( key1 => 1,
2 => 3,
key2 => 4,
5 => 6,
);

在后一种情况下,您可以使用数组 refs([] 构造)正确创建哈希,但您仍在为哈希分配一个 href。你想做:
%h1 = (
'key1' => [ 1, 2, 3 ],
'key2' => [ 4, 5, 6 ]
);

这会在列表上下文中创建 %h1 并通过引用在标量上下文中创建您的值。

关于perl - 数组与列表引用问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5008813/

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