gpt4 book ai didi

perl - 在 perl 中组合匿名函数

转载 作者:行者123 更新时间:2023-11-30 23:58:00 25 4
gpt4 key购买 nike

my $anon1 = sub { return ( $n < 10 ? 0 : 2 ) }; # where $n is any numeric value say
my $anon2 = sub { return ( 1 ) };

my $anon3 = $anon1;
print ref($anon3)."\n";

Answer = 'CODE',即分配给另一个变量有效。

问题:从 2 个匿名函数创建匿名函数的语法是什么?

$anon3 = $anon1 || $anon2; # N.B. not expecting this to work but is to suggest that want a function that if $anon1 is 0 then assign to $anon2

注意我不想做 &$anon1 || &$anon2。我正在尝试创建一个由 $anon1 和 $anon2 组合而成的函数。这些函数不是静态的。

如果我可以进一步加强这个问题:如果 ANON 函数的数量是可变的,例如存储在哈希表中,如何根据键动态形成 anon3?

%anon = (
'anon1' => sub { return ( $n < 10 ? 1 : 0 ) },
'anon2' => sub { return ( $n < 20 ? 2 : 0 ) },
#and this may extend to N entries
'anonN' => sub { return ( 999 ) },
); # the anonymous functions anonX are purely for example.

因此旨在通过迭代“排序键 %anon”来创建以下内容:

$anon3 = sub { $anon{'anon1'}->() || $anon{'anon2'}->() || $anon{'anonN'}->() };

最佳答案

创建一个新的匿名函数来调用您想要组合的两个函数,例如

my $anon3 = sub { $anon1->() || $anon2->() };

关于perl - 在 perl 中组合匿名函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48572795/

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