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

Raku mixins如何处理操作符重载?

谷玉韵
2023-03-14

我可以使用一些帮助来计算重载数学运算符是否可以通过do(或but)以避免下面的歧义错误的方式与混音一起工作...此模块:

unit module Physics::Error;

role Error is export {
        has Real $.abs-error;
    
        method negate {
            ...
        }
    }
    
    multi prefix:<-> ( Error:D $right) is export {
        ...
    }

此脚本使用的方式类似。。。

use Physics::Error;

my $x = 12.5 does Error(0.5);
my $z = -$x;

对前缀的模糊调用:

我希望我的自定义操作符总是明确地获胜,然后让它实现核心操作和错误计算,然后返回a(Rat{Physics::Error::Error})。

大局是做数学运算,也执行简单的错误计算。

共有1个答案

戈念
2023-03-14

将默认特性添加到Multi中:

    multi prefix:<-> ( Error:D $right) is export is default {

也就是说,请注意jnthn的评论:

是默认值实际上是最后的手段,即使你可以使用mixin方法让它工作,你也会发现结果非常慢,这在很大程度上是因为mixin触发了去优化(从专门的、JIT编译的代码中掉出来,返回到解释器)。

 类似资料:
  • 有两种主要的方法来处理流中的错误。你可以重试流并保证流最终会正常运行,或者处理错误并进行转换。 重试 - 现在怎么样? 当你认为错误是由于某些原因是暂时导致的,那么这种方法是适用的。通常不稳定的网络是个很好的例子。当网络不稳定时端点可能会在你多次尝试后才能回应。要点是你的首次尝试可能失败,但重试x次并且在两次尝试之间有一定的时间间隔,最终端点会回应。 retry retry() 操作符可以让我们重

  • 这里你可以看见一系列包括操作符和对应方法的表。对应方法必须在指定的类中通过各种可能性被实现。 一元操作符 操作符 函数 +a a.unaryPlus() -a a.unaryMinus() !a a.not() a++ a.inc() a— a.dec() 二元操作符 操作符 函数 a + b a.plus(b) a - b a.minus(b) a * b a.times(b) a / b a.

  • 本文向大家介绍Java:String.split()特殊字符处理操作,包括了Java:String.split()特殊字符处理操作的使用技巧和注意事项,需要的朋友参考一下 一:需要特殊处理才能使用split()方法的字符 (1)需要使用"\\"或"[ ]"才能正确使用的字符集: ( ) [ ] { \ ? * + . ^ $ | (2)栗子: 二:如不处理直接使用可能会出错的情况 (1)"|" 和

  • Kotin有一些固定数量象征性的操作符,我们可以在任何类中很容易地使用它们。方法是创建一个方法,方法名为保留的操作符关键字,这样就可以让这个操作符的行为映射到这个方法。重载这些操作符可以增加代码可读性和简洁性。

  • 如果这被认为是一个可接受的实践,我需要什么-如果有-错误处理?我的理解是,task.wait()将重新抛出异步操作抛出的任何异常,并且我没有提供任何取消异步操作的机制。仅仅调用task.wait()就足够了吗?