大佬教程收集整理的这篇文章主要介绍了perl6 – Perl 6中只有一个参数的构造函数,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
class MyClass { has $.var1; method new($var1) { return MyClass.new(var1 => $var1); } } my $my_class1 = MyClass.new(33); say $my_class1.var1;
错误是:
Too few positionals passed; expected 2 arguments but got 1 in method new at test1.pl6:28 in method new at test1.pl6:28 in block <unit> at test1.pl6:33
怎么了?
bless
,即
class MyClass { has $.var1; method new($var1) { return self.bless(var1 => $var1); } }
有一些事情可以改进,例如
> one可以添加一个显式的invocant参数并使用:U在实例对象上调用时使.new()失败
>显式返回是多余的 – 无论如何都会返回方法中的最后一个表达式,而且目前它实际上会损害性能
>用于传递保存在同名变量中的命名参数的语法糖
把它们放在一起,我们最终得到了
class MyClass { has $.var1; method new(MyClass:U: $var1) { self.bless(:$var1); } }
至于你的错误来自哪里:
您的方法new被声明为采用位置参数(由于隐式调用,总计数为2个预期参数),但调用MyClass.new(var1 => $var1)仅传递了一个命名参数.请注意,所述方法是您的类中唯一存在的.new(),因此如果调用实际上有效,那么您最终会得到无限递归!
以上是大佬教程为你收集整理的perl6 – Perl 6中只有一个参数的构造函数全部内容,希望文章能够帮你解决perl6 – Perl 6中只有一个参数的构造函数所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。