作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
引用这个问题/答案,perl6 multi 默认为 sub。
No such method <name> for invocant of type <class>
我本来希望它默认为方法。请问有人可以解释这样做的理由吗?
最佳答案
一个多声明符( multi
、 proto
或 only
)后面没有其他类型的声明符,而是一个例程名称,它始终是 sub
的缩写。声明者。
Perl 6 热衷于词法作用域,尤其热衷于使代码易于重构。
以最短的方式声明 multi
采用范围最窄的选项 - 词法范围 - 鼓励尽可能缩小范围。
制作 multi
如果没有声明符,则具有一致的含义有助于重构,允许人们自信地将代码移动到所需的最窄范围。仅仅因为它被移到了 class
就突然改变了它的含义。将是重构的挫败感。
最后,值得注意的是sub
在 Perl 6 中可以看作是填补了与 private static
相同的利基市场。在各种其他语言中,多重调度通常很有用,因此多重调度 sub
因此可以在 class
中使用。 body 。
有时特殊情况是合理的。与自然语言一样,Perl 6 会在真正值得的时候制作它们,但默认情况下是避免使用它们。 multi
的参数表示 class
中的其他内容(大概是 role
)对于特殊情况来说还不够强大。
关于raku - 为什么 perl6 multi 默认为 sub?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51343245/
我是一名优秀的程序员,十分优秀!