首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Raku算子超载

Raku算子超载
EN

Stack Overflow用户
提问于 2019-12-08 19:59:43
回答 2查看 181关注 0票数 8

使用以下代码:

代码语言:javascript
运行
复制
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';
}

在以下方面的成果:

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

而将注释块切换为其他定义会导致:

代码语言:javascript
运行
复制
(base) hsmyers@BigIron:~/board$ perl6 ./op.p6
Truthy

破碎的版本(有三个参数)是我想要的,有人能解释一下为什么它坏了吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-12-08 20:50:22

<5 0 10>实际上构建了一个List,一个单一的List

类比就是要做的事情清单,待办事项清单。一份待办事项清单有多少件事?一份待办事项单。

因此,您将得到错误消息:

expected 3 arguments but got 1

您想要的是指定一个本身由多个值组成的值。有一种方法可以做到:

代码语言:javascript
运行
复制
sub circumfix:<α ω>( ( $a, $b, $c ) ) ...

附加的()会导致毁伤

票数 10
EN

Stack Overflow用户

发布于 2019-12-08 20:45:45

代码语言:javascript
运行
复制
D:\>6e "say <5 0 10>"
(5 0 10)

这不是三个论点。它是三个值(类型为IntStr)的列表,因此是一个参数。

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

https://stackoverflow.com/questions/59239380

复制
相关文章

相似问题

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