bri*_*foy 11 currying perl6 raku
Perl 6允许你用.assuming来curry子程序.当您想要假设领先的位置参数时,这很容易做到:
# The first one
{
sub first-and-last ( $first, $last ) {
say "Name is $first $last";
}
my &joe = &first-and-last.assuming( 'Joe' );
&joe.( 'Jones' );
}
Run Code Online (Sandbox Code Playgroud)
但是,如果我想假设其他位置参数之一而只留下第一个参与者呢?如何判断.assuming假设哪些参数?
# The second one
try {
sub first-and-last ( $first, $last ) {
say "Name is $first $last";
}
my &smith = &first-and-last.assuming( Empty, 'Smith' );
&smith.( 'Joe' );
}
Run Code Online (Sandbox Code Playgroud)
使用命名参数这很简单,但这不是我很好奇的.
如果这真的只是一个EVAL下面,那有点令人失望.
bri*_*foy 12
嗯,无论什么有效:
sub first-and-last ( $first, $last ) {
say "Name is $first $last";
}
my &smith = &first-and-last.assuming( *, 'Smith' );
&smith.( 'Joe' );
Run Code Online (Sandbox Code Playgroud)
你可以处理中间参数:
sub longer-names ( $first, $middle, $last, $suffix ) {
say "Name is $first $middle $last $suffix";
}
my &smith = &longer-names.assuming( *, *, 'Public', * );
&smith.( 'Joe', 'Q.', 'Jr.');
Run Code Online (Sandbox Code Playgroud)