我有4个文件都在同一个目录下:main.rakumod,infix_ops.rakumod,prefix_ops.rakumod和script.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 ×1