当前位置: 首页 > 知识库问答 >
问题:

Raku算子重载

甘永春
2023-03-14

使用以下代码:

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';
}

结果:

(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

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

(base) hsmyers@BigIron:~/board$ perl6 ./op.p6
Truthy

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

共有1个答案

施子民
2023-03-14

一个类比就是要做的事情的清单,一个要做的事情的清单。要做的事情有多少?这是1--一张待办事项清单。

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

应为3个参数,但得到1个

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

sub circumfix:<α ω>( ( $a, $b, $c ) ) ...

附加的会导致分解。

 类似资料:
  • 我可以使用一些帮助来计算重载数学运算符是否可以通过(或)以避免下面的歧义错误的方式与混音一起工作...此模块: 此脚本使用的方式类似。。。 对前缀的模糊调用: 我希望我的自定义操作符总是明确地获胜,然后让它实现核心操作和错误计算,然后返回a(Rat{Physics::Error::Error})。 大局是做数学运算,也执行简单的错误计算。

  • 可能重复: Java条件运算符?:结果类型 通过Java三元运算符的自动装箱行为实现NullPointerException 说我有两个功能: 我这样称呼他们: 这会编译,但当我运行它时,我得到一个空指针异常(对不起,我不确定是在什么条件下)。我的一些问题是: 它为什么还要编译呢?? 它显然没有调用“正确的”函数,因为这不会导致NPE。那么它在调用哪个函数呢?它执行还是?

  • Fedora 33 我正在尝试使用Raku从cupsGetDests2输出打印机列表。 这是C方式,尽管它也显示已删除的打印机: 我添加了“ Raku邮件列表上的一个朋友给我看了这段代码: 但它在输出时出错: libcups真的在那里! 我做错了什么? 新信息: 我做了以下操作: 现在运行该程序可提供: 这是我的打印机列表: 现在我做错了什么? 在Curt的帮助下解决了。我的新代码: 输出:

  • (这是《Raku rebless不再处理继承类》的后续内容) 我试图想出一个更复杂的用例,但无法让代码正常工作。 这个想法是一个Person类,带有儿童和成人的混音子类。我们有一个UNICEF对象,当年龄超过18岁时将类型更改为Adult。 这一点显然是失败的,因为成年人是父母而不是孩子的混合体: 但它部分运行: 用一个类和一个混音来设置它是这样的: 但它不起作用: 我明白了。rebless系列指

  • 我想写一个函数返回一个数组,其所有子数组的长度必须为2。例如,返回将是。 我定义: (1); 和 我觉得(1)太复杂了。有更简单的吗?

  • 常见问题,Int Raku,如何合并,合并两个哈希? 说: 如何获取