加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

为什么perl6 multi默认为sub?

发布时间:2020-12-15 21:54:45 所属栏目:大数据 来源:网络整理
导读:在参考这个问题/答案时,perl6 multi默认为sub. No such method name for invocant of type class 我原以为它默认为方法.有人可以解释一下这个理由吗? 解决方法 sub可以出现在任何地方,默认为词法作用域规则(my). 方法通常仅在类定义中发生,并且默认为作用域
在参考这个问题/答案时,perl6 multi默认为sub.

No such method <name> for invocant of type <class>

我原以为它默认为方法.有人可以解释一下这个理由吗?

解决方法

sub可以出现在任何地方,默认为词法作用域规则(my).
方法通常仅在类定义中发生,并且默认为作用域(has).
my multi sub foo (){…}
multi foo (){…} # identical

my multi method foo (){…} # must be forced to my declaration


class :: {
  my multi sub foo (){…}
  multi foo (){…} # identical

  has multi method bar (){…}
  multi method bar (){…} # identical
}


sub :: () {
  my multi sub foo (){…}
  multi foo (){…} # identical

  my multi method foo (){…} # must be forced to my declaration
}

method :: () {
  my multi sub foo (){…}
  multi foo (){…} # identical

  my multi method foo (){…} # must be forced to my declaration
}

由于sub可以,并且确实在任何地方出现,因此对于multi来说意味着sub而不是方法更有意义.

虽然您可能认为多重意义在类定义中暗示一个方法;这将使得多元意味着两种不同的东西(第二次)取决于上下文.它会暗示我的子类在类之外,并且在类中有方法. (它也会回到我在类里面的方法里面.)

那将是一个特例. Perl 6的设计目标之一是减少特殊情况的数量.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读