我正在尝试为类方法创建一个可调用的变量。
我可以为方法'walk'创建一个可调用的变量,以便按预期工作。
现在我想创建一个可调用的函数,它将调用方法'walk'并传递参数'up'。
这可行吗?
class Person {
method walk(Str $direction) {
say "Walking $direction";
}
}
我可以为方法'walk'创建一个可调用的变量,以便按预期工作。
my $person = Person.new;
my $callable = $person.^find_method('walk');
$person.$callable('up'); # OUTPUT: "Walking up"
现在我想创建一个可调用的函数,它将调用方法'walk'并传递参数'up'。
my $callable = $person.^find_method('walk').assuming('up');
$person.$callable();
# Type check failed in binding to parameter '$direction'; expected Str but got Person (Person.new)
# in sub __PRIMED_ANON at EVAL_7 line 1
# in block <unit> at <unknown file> line 1
$person.$callable
(不带括号)会产生相同的错误。
我尝试直接调用它,但是得到了不同的错误。
$person.^find_method('walk')('up')
# Too few positionals passed; expected 2 arguments but got 1
# in method walk at <unknown file> line 2
# in block <unit> at <unknown file> line 1
这可行吗?