Может ли Perl 6 принять позиционный параметр, который не является первым?

Perl 6 позволяет выполнять подпрограммы с помощью . при условии. Это легко сделать, если вы хотите взять на себя ведущие позиционные параметры:

# The first one
{
sub first-and-last ( $first, $last ) {
    say "Name is $first $last";
    }

my &joe = &first-and-last.assuming( 'Joe' );

&joe.( 'Jones' );
}

Но что, если я хочу принять один из других позиционных параметров, оставив только одни? Как я могу сказать .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' );
}

С именованными параметрами это прямолинейно, но это не то, что мне интересно.

Если это действительно просто EVAL внизу, это своего рода разочарование.

Ответ 1

Huh, Whatever работает:

sub first-and-last ( $first, $last ) {
    say "Name is $first $last";
    }

my &smith = &first-and-last.assuming( *, 'Smith' );

&smith.( 'Joe' );

И вы можете обрабатывать средние параметры:

sub longer-names ( $first, $middle, $last, $suffix ) {
    say "Name is $first $middle $last $suffix";
    }

my &smith = &longer-names.assuming( *, *, 'Public', * );

&smith.( 'Joe', 'Q.', 'Jr.');