【发布时间】:2018-10-09 00:45:54
【问题描述】:
在 Dart 2(Dart VM 版本:2.0.0-dev.50.0)中使用 BigInt 类,我遇到了以下问题:
BigInt x = 5;
print(x % 3); // 2
print(x ~/ 3); // 1
到目前为止,一切都很好,但是......
当我尝试访问方法时,例如:
print(x.pow(2));
我得到一个 NoSuchMethodError: Class 'int' has no instance method 'pow' 异常。看来x 被视为香草味的int...
此外,如果我尝试更明确地实例化 x:
var x = new BigInt.from(5);
我得到 NoSuchMethodError: Class 'int' has no instance getter '_used'。
我误会the documentation了吗?具体来说,我们如何将int(如5 或['a', 'b', 'c'].length)转换为BigInt 对象?
编辑:虽然这并不能解释为什么 BigInt x = 5 和 x % 3 这样的表达式不会产生错误并按预期工作,但这似乎只是由于 BigInts 和 ints 没有播放好好在一起。例如,一旦x 确实代表BigInt(与使用BigInt x = 5 实例化的情况不同,之后x 似乎代表常规int)然后表达式x % 3 不起作用,因为% 操作期望右侧有一个 BigInt,而 3 不是。 (表达式需要更改为笨拙的 x % new BigInt.from(3) 以摆脱 NoSuchMethodError: Class 'int' has no instance getter '_used' 异常。)
正如我已经提到的,这并不能解释一切。事实上,BigInt x = 5 之类的表达式是允许的,而x % 3 之类的表达式则可以按预期工作,这表明BigInts 和ints 意味着可以无缝地一起工作,在至少在一些设计师的论文中......
【问题讨论】:
标签: dart