gpt4 book ai didi

Perl:从函数返回 hashref 不起作用

转载 作者:行者123 更新时间:2023-12-02 08:48:16 24 4
gpt4 key购买 nike

当我遇到一些我不理解的奇怪行为时,我正在使用一些没有任何用处的混淆代码。

这是我的代码。

no strict;
sub foo{1&&{${$_[0]},${$_[0]}}}say map {&${${_}}(${_})->{${${_}}}}map{\$_}qw(foo);

缩进:

no strict;
sub foo {
1 && { ${$_[0]} => ${$_[0]} }
}
say map { &${ ${_} }( ${_} )->{ ${ ${_} } } }
map { \$_ } qw (foo);

它应该做的是获取字符串 foo,构建对它的引用,然后调用具有该名称的函数 (&foo)。该函数应该返回一个 hashref,其中键和值都是 foo 字符串。之后,它打印返回的 hashref 的键 foo 的值,即 foo

到目前为止,还不错。没有用,但仍然很有趣。奇怪的是,当我删除 sub 中的 1 && 部分时,它会返回一个列表,尽管有 curl ,但我不知道为什么会这样。

如果我只是说 sub foo { { 'foo'=>'foo' } } 它返回引用。为什么不在我的情况下?此外,为什么在我添加 1 && 时会出现这种情况?

最佳答案

如果没有 1 && 部分,花括号将被解释为一个 block ,从而返回一个列表。对于附加部分,perl 解释器会根据需要生成匿名散列引用。

除了 1 &&,您还可以使用简单的 + 来帮助 perl 解释器:

sub foo {
+{ ${$_[0]} => ${$_[0]} }
}

关于Perl:从函数返回 hashref 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10720890/

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