我创建了一个类,其中包含multi
函数重载的定义,但是当我尝试调用该类和重载方法时,它会抛出错误。可以运行以产生此错误的工作示例如下所示:
class Test
{
multi test(@data) {
return test(@data, @data.elems);
}
multi test(@data, $length) {
return 0;
}
}
my @t = 't1', 't2', 't3';
say Test.test(@t);
Error:
No such method 'test' for invocant of type 'Test'. Did you mean any of these?
List
Set
gist
list
in block <unit> at test.p6 line 13
我可能做错了,有人可以指出我正确的方法吗?
Edit:我正在有效地尝试将其变成一个模块,我可以将其用于其他用途。
您需要添加self
你之前的关键字test
method:
class Test
{
multi method test(@data) {
return self.test(@data, @data.elems);
}
multi method test(@data, $length) {
return 0;
}
}
my @t = 't1', 't2', 't3';
say Test.test(@t);
note:在 Perl 6 类中,使用method
关键字来声明方法。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)