Perl 6 相当于 Java 的 >> 和 >>> 运算符?



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

目前我使用+> +<(和~>(运算符来补偿这一点,但它们等效吗?

这完全取决于您在运算符左侧放置的内容。由于Perl6默认情况下适用于bigint(也就是说,在内存耗尽或厌倦等待之前,整数值的大小会不断增加(,因此它实际上取决于右移时是负值还是正值。

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中的<<>>。而且Perl6没有Java的>>>(无论如何(。

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

最新更新