perl6 – Perl 6中的.is-prime和is-prime()之间是否有一些区别?
发布时间:2020-12-15 21:44:39 所属栏目:大数据 来源:网络整理
导读:似乎是素数和.is-prime以不同的方式对待他们的论点: is-prime('11')True '11'.is-primeNo such method 'is-prime' for invocant of type 'Str' in block unit at unknown file line 1 is-prime(2.5)False (2.5).is-primeNo such method 'is-prime' for invo
似乎是素数和.is-prime以不同的方式对待他们的论点:
> is-prime('11') True > '11'.is-prime No such method 'is-prime' for invocant of type 'Str' in block <unit> at <unknown file> line 1 > is-prime(2.5) False > (2.5).is-prime No such method 'is-prime' for invocant of type 'Rat' in block <unit> at <unknown file> line 1 解决方法
这是
Int class的常规定义
proto sub is-prime($) is pure {*} multi sub is-prime(Int:D i) { nqp::p6bool(nqp::isprime_I(nqp::decont(i),nqp::unbox_i(100))); } multi sub is-prime(i) { i == i.floor && nqp::p6bool(nqp::isprime_I(nqp::decont(i.Int),nqp::unbox_i(100))); } 在第二个multi中,isprime_I使用.Int转换其参数.任何具有该方法的东西都可以返回一个可能是素数的整数. 这种不平衡是我不喜欢Perl 6的事情之一.如果我们有一个可以这样做的例程,我们应该在类结构中将方法移到更高的位置. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |