gpt4 book ai didi

Perl 散列在声明时引用自身

转载 作者:行者123 更新时间:2023-12-01 00:56:15 25 4
gpt4 key购买 nike

在声明 Perl 散列时,我想知道是否可以使用在声明之前分配的值。

我想一次完成与此等效的操作:

my %H   = (something => generateString());
$H{foo} = $H{something} . "/FOO",
$H{bar} = $H{something} . "/BAR",

我可以想象这样的事情:

my %H = (
something => generateString(),
foo => $_{something} . "/FOO",
bar => $_{something} . "/BAR",
);

编辑:明确地说,我不关心对 $H{something} 的实际引用(即更改 $H{something} 之后不应影响 $H{foo})。我只想将它的值放入字符串连接中。

最佳答案

你似乎认为在

中有两个赋值运算符
%H = ( a=>1, b=>$H{a} );

没有。请记住以上内容与

%H = ( 'a', 1, 'b', $H{a} );

有一个赋值运算符,在执行赋值之前,您需要知道要赋值的是什么。

我要说的是 %H = ( a=>1, b=>$H{a} ); 的真正问题不是范围之一;真正的问题是,当您执行 $H{a}[1] 时,没有任何内容分配给 %H。因此,$_{a}$H{a} 更有意义。

解决方法很简单:

my $something = generateString();
my %H = (
something => $something,
foo => "$something/FOO",
bar => "$something/BAR",
);

  1. %H 还没有被创建!

关于Perl 散列在声明时引用自身,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27158324/

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