小编Han*_*ann的帖子

将类的运算符定义与其他文件分开并使用它们

我有4个文件都在同一个目录下:main.rakumodinfix_ops.rakumodprefix_ops.rakumodscript.raku

  • main模块有一个类定义 ( class A)
  • *_ops模块有一些运算符例程定义要编写,例如,$a1 + $a2以重载的方式。
  • script.raku尝试A实例化对象并使用那些用户定义的运算符。

为什么是 3 个文件而不是 1 个?由于类定义可能很长,并且在文件中分离重载的运算符定义似乎是编写更整洁代码(更易于管理)的好主意。

例如,

# main.rakumod
class A {
    has $.x is rw;
}
Run Code Online (Sandbox Code Playgroud)
# prefix_ops.rakumod
use lib ".";
use main;

multi prefix:<++>(A:D $obj) {
    ++$obj.x;
    $obj;
}
Run Code Online (Sandbox Code Playgroud)

和类似的例程infix_ops.rakumod。现在,在 中script.raku,我的目标是仅导入主模块并查看也可用的重载运算符:

# script.raku
use lib ".";
use main;

my $a = A.new(x => -1);
++$a;
Run Code Online (Sandbox Code Playgroud)

但它自然不会看到++多个A对象,因为 …

raku

9
推荐指数
1
解决办法
118
查看次数

标签 统计

raku ×1