代码之家  ›  专栏  ›  技术社区  ›  madcrazydrumma

Perl 6相当于Java的>和> >操作符?

  •  9
  • madcrazydrumma  · 技术社区  · 6 年前

    我已经开始使用Perl 6,我现在正在移植Java程序中的一些代码,它们使用Java的移位操作符。 << >> 以及 >>> 操作员。

    目前我正在使用 +> \ +< (和) ~> )操作员可以补偿这一点,但它们是等价的吗?

    1 回复  |  直到 6 年前
        1
  •  10
  •   Elizabeth Mattijsen    6 年前

    这完全取决于你在接线员左边放了什么。由于Perl6默认在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的等价物。 >>> (不管怎样)。

    此外,还有 ~> 尽管指定了运算符,但它目前尚未实现。欢迎使用补丁!