Perl 6 等同于 Java 的 >> 和 >>> 运算符?

Perl 6 equivalents to Java's >> and >>> operators?

我已经开始使用 Perl 6,目前正在从我的 Java 项目中移植一些代码,他们使用 Java 的移位运算符 <<>>,以及 >>> 运算符。

目前我正在使用 +> \ +<(和 ~>)运算符来弥补这一点,但它们是否等效?

这完全取决于您在运算符左侧放置的内容。由于 Perl 6 默认在 bigints 上工作(又名,整数值会增加大小直到你 运行 内存不足或厌倦了等待),这实际上取决于你是负值还是正值你右移。

say  2**65 +> 63; #  4
say -2**65 +> 63; # -4

因此,您可以向左移动任意位置:

say  1 +< 65; #  36893488147419103232
say -1 +< 65; # -36893488147419103232

现在,如果您想将自己限制为本机整数(通常是 64 位),那么您需要换行:

my int $i = 1;         say $i +< 65; # 2
my int $i = 1;         say $i +< 63; # -9223372036854775808
my int $i = 2**63 - 1; say $i +> 62; # 1

并且有人可能会争辩说这些等同于 Java 中的 <<>>。并且 Perl 6 没有 Java 的 >>> 的等价物(无论如何)。

此外,~> 运算符虽然已指定,但目前尚未实现。欢迎补丁!