我已经使用Perl 6开始,我目前从我的Java项目移植了一些代码,他们使用Java的移位操作符<<和>>,还有>>>运营商.
目前我正在使用+> \ +<(和~>)运营商来弥补这一点,但它们是否相同?
Eli*_*sen 10
这一切都取决于你放在操作员左侧的内容.因为Perl 6默认在bigints上工作(也就是说,整数值会随着你的内存不足或者厌倦等待而增大),这实际上取决于你在右移时是否有负值或正值.
say 2**65 +> 63; # 4
say -2**65 +> 63; # -4
Run Code Online (Sandbox Code Playgroud)
因此,您可以根据需要左移:
say 1 +< 65; # 36893488147419103232
say -1 +< 65; # -36893488147419103232
Run Code Online (Sandbox Code Playgroud)
现在,如果你想将自己限制为原生整数,通常是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
Run Code Online (Sandbox Code Playgroud)
而且人们可以说这些都是那么的等价<<和>>Java编写的.并且Perl 6没有相当于Java >>>(但无论如何).
此外,~>运营商虽然已经提出,但目前尚未实施.补丁欢迎!
| 归档时间: |
|
| 查看次数: |
200 次 |
| 最近记录: |