1

问这个是因为我注意到print('${"abc".hashCode}');在 dartpad 上做它会给出102006619,而在本地运行它会产生756227931

我的飞镖版本:

$ dart --version
Dart SDK version: 2.9.0-21.10.beta (beta) (Tue Jul 21 10:46:30 2020 +0200) on "linux_x64"
4

1 回答 1

2

那我猜答案是“不”。或者也许“这取决于”,或者“它很复杂”。

我不相信 Dart 最近任何时候都改变了字符串的哈希码算法,但不能保证它不会发生。因此,它可能在不同版本之间是稳定的,但不能保证它会保持这种状态。

但是,算法可能因平台而异。Dart2js 生成 JavaScript,就像在 DartPad 中运行的一样,并且本地代码不运行,VM 在计算字符串哈希的方式上确实有所不同。我不知道 dev-compiler 是否有第三个版本,但我猜它可能会跟随 dart2js。

于 2020-08-16T11:00:45.013 回答