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";
答案='代码',即分配给另一个变量。
问题:从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
N.B。我不想做&amp; $ 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.
所以旨在通过迭代'sort keys%anon'来创建以下内容:
$anon3 = sub { $anon{'anon1'}->() || $anon{'anon2'}->() || $anon{'anonN'}->() };
答案 0 :(得分:8)
创建一个新的匿名函数,调用两个要组合的函数,例如
my $anon3 = sub { $anon1->() || $anon2->() };