在perl中组合匿名函数
注意,我不想做&$anon1 |&$anon2。我试图创建一个函数,它是$anon1和$anon2的组合。这些函数不是静态的 如果我可以进一步强化这个问题:如果ANON函数的数量是可变的,例如存储在哈希表中,那么anon3如何作为键的函数动态形成在perl中组合匿名函数,perl,Perl,注意,我不想做&$anon1 |&$anon2。我试图创建一个函数,它是$anon1和$anon2的组合。这些函数不是静态的 如果我可以进一步强化这个问题:如果ANON函数的数量是可变的,例如存储在哈希表中,那么anon3如何作为键的函数动态形成 $anon3 = $anon1 || $anon2; # N.B. not expecting this to work but is to suggest that want a function that if $anon1 is 0 then a
$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
创建一个新的匿名函数,该函数调用您要组合的两个函数,例如
$anon3 = sub { $anon{'anon1'}->() || $anon{'anon2'}->() || $anon{'anonN'}->() };
我增强了原始问题,询问如何通过编程生成答案。
%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.
$anon3 = sub { $anon{'anon1'}->() || $anon{'anon2'}->() || $anon{'anonN'}->() };
my $anon3 = sub { $anon1->() || $anon2->() };