我了解在Dart中,按位运算符可用的位数随目标平台的不同而不同。例如,当为Android或iOS编译时,按位运算符作用于64位,而对于Javascript,它仅作用于32位。同样,仅支持32位整数的计算机上的按位运算将仅对32位起作用。
如何以与平台无关的方式静态确定按位运算符可用的位数?我无法为此找到API。 Platform class似乎是个不错的地方。
我可以想到两种方法:
const _isBitwise32 = (0x01 << 32) == 0;
或
final _isBitwise32 = (0x01 << 32) == 0;
My reading建议在两种情况下Dart都会在编译时而不是运行时评估右手表达式。我可以依靠编译器始终根据目标平台评估此表达式吗?
是否有更好的方法可以做到这一点?我希望该值是静态的,因为我正在执行的按位运算已经占用了CPU大量资源,如果可以的话,我宁愿节省时钟周期。
更新:一些快速测试显示,上面的const
在编译为Javascript时的计算结果为true
,否则为false
,因此,我想我可以推断出编译器在目标平台的约束条件。