hsm*_*ers 8 operator-overloading raku
使用以下代码:
use v6d;
# sub circumfix:<? ?>( @a ) {
# @a[0] >= @a[1] & @a[0] <= @a[2];
# };
sub circumfix:<? ?>( $a, $b, $c ) {
$a >= $b & $a <= $c;
};
if (? <5 0 10> ?) {
say 'Truthy';
}
else {
say 'Falsey';
}
Run Code Online (Sandbox Code Playgroud)
结果是:
(base) hsmyers@BigIron:~/board$ perl6 ./op.p6
Too few positionals passed; expected 3 arguments but got 1
in sub circumfix:<? ?> at ./op.p6 line 7
in block <unit> at ./op.p6 line 11
Run Code Online (Sandbox Code Playgroud)
而切换其他定义的注释块会导致:
(base) hsmyers@BigIron:~/board$ perl6 ./op.p6
Truthy
Run Code Online (Sandbox Code Playgroud)
损坏的版本(带有三个参数)是我想要的版本,有人可以解释它为什么损坏吗?
rai*_*iph 10
<5 0 10>从字面上构建了一个List,一单 List。
一个类比是一份要做的事情清单,一份待办事项清单。一个待办事项清单有多少内容?它是 1 - 一个待办事项列表。
因此,您会收到错误消息:
expected 3 arguments but got 1
您想要的是指定您想要一个本身由多个值组成的值。这是一种方法:
sub circumfix:<? ?>( ( $a, $b, $c ) ) ...
Run Code Online (Sandbox Code Playgroud)
额外的包围(并)造成破坏。
D:\>6e "say <5 0 10>"
(5 0 10)
Run Code Online (Sandbox Code Playgroud)
这不是三个论点。它是三个值(类型IntStr)的列表,因此是一个参数。
| 归档时间: |
|
| 查看次数: |
147 次 |
| 最近记录: |