首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Perl6中,.is-prime和is-prime()有什么不同吗?

在Perl6中,.is-prime和is-prime()有什么不同吗?
EN

Stack Overflow用户
提问于 2017-12-25 00:09:56
回答 1查看 194关注 0票数 5

看起来is-prime.is-prime对待他们的观点是不同的:

代码语言:javascript
复制
> 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
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-12-25 01:38:09

下面是来自Int class的例程定义

代码语言:javascript
复制
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转换其参数。然后,任何具有该方法的对象都可以返回一个可能是质数的整数。

这种不平衡是我不喜欢Perl6的原因之一。如果我们有一个可以这样做的例程,我们应该在类结构中将该方法移到更高的位置。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47962163

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档