gpt4 book ai didi

arrays - Perl:将数组分配给散列

转载 作者:行者123 更新时间:2023-12-03 12:25:30 25 4
gpt4 key购买 nike

此语法有效:

$b{"x"} = [1,2,3];
pp %b;
# Displays ("x", [1, 2, 3])

但是我需要能够动态创建数组的内容并在以后分配它。这不起作用; 帮助,我遗漏的明显部分是什么 ?
@a = [1,2,3];
$b{"x"} = @a;
pp %b;
# Shows up as ("x", 1) ... not what I want or expected.

也尝试了这些变体。
$b{"x"} = [@a];  # ("x", [[1, 2, 3]])  ...close

$b{"x"} = \@a; # ("x", [[1, 2, 3]])

$b{"x"} = [\@a]; # ("x", [[[1, 2, 3]]])

$b{"x"} = %a; # ("x", 0)

$b{"x"} = $a; # ("x", undef)

$b{"x"} = [$a]; # ("x", [undef])

$b{"x"} = @{@a}; # ("x", 0)

而且,理想情况下,我希望能够稍后将数组作为数组取出。

最佳答案

您缺少的部分是 @a = [1,2,3]不会创建一个包含 3 个元素的数组。它创建一个包含一个元素的数组,该元素是一个数组引用。

你的意思是 @a = (1,2,3) .

要将该数组分配给散列元素,您可以使用 $b{"x"} = [@a]$b{"x"} = \@a ,取决于您要尝试做什么。 [@a]创建一个包含 @a 当前内容副本的新 arrayref .如@a的内容之后更改,对$b{x}没有影响.

另一方面,\@a给你引用@a本身。如果然后更改 @a 的内容,这将在 $b{x} 中可见(反之亦然)。

关于arrays - Perl:将数组分配给散列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5384825/

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