作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
它具有看似简单的代码:
method match(Any:U: |) { self.Str; nqp::getlexcaller('$/') = Nil }
(^3).match(1) # OUTPUT: «「1」»
say (1,3 ... * ).match(77); # OUTPUT: «Nil»
say (1,3 ... * ).match(1); # OUTPUT: «Nil»
say (1,3 ... * ).match(/\d/); # OUTPUT: «Nil»
say (^10).match(/\d/); # OUTPUT: «「0」»
say <a b c>.match(/\w/); # OUTPUT: «「a」»
match
没有重新实现,它们都在调用该代码。但是我看不到从 NPQ 返回字符串和设置变量是如何做到的,或者为什么它在序列上不起作用。
最佳答案
.match
是在单个干草堆字符串中搜索针。无限序列字符串化为 '...'
.
say (1,3 ... 9).Str; # 1 3 5 7 9
say (1,3 ... 9).match: '1'; # 「1」
say (1,3 ... *).Str; # ...
say (1,3 ... *).match: '.'; # 「.」
method match(Any:U: |) { ... }
Any:U
有点像
Any $ where not .defined
除非它匹配,否则您将收到错误消息“例程'match'的参数'
Seq
.所以你的
.match
调用不会分派(dispatch)到您正在查看的方法定义。
say (1,3 ... *).^lookup('match').package ; # (Cool)
Seq
将因此发送到
the Cool
code :
method match(Cool:D: |c) {
...
self.Stringy.match(|c)
}
say (1,3 ... *).^lookup('Stringy').package ; # (Mu)
multi method Stringy(Mu:D $:) { self.Str }
say (1,3 ... *).Str; # ...
say (1,3 ... *).match: '.'; # 「.」
关于match - Any.match 是做什么的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54821315/
我是一名优秀的程序员,十分优秀!