限定公開でまとめを作れば、相互フォローやフォロワー限定でまとめを共有できます!

Scala の BigInt に関しての既知のBug(?)に遭遇したけど最新版ではなおってるらしい・・・というメモ

これまとめた時点の情報なので、 2.8.2 や 2.9.2 、 2.10.0 のfinalが出るときはどーなるかわかりませんが、現状 2.8.1.finalも2.9.1.final もこんな動作らしいので気をつけましょう
プログラミング SCALA
3572view 0コメント
このまとめをお気に入りにして応援しよう!
0
Kenji Yoshida @xuwei_k
scala> BigInt("100000000000000000000000000000000").isValidByte res0: Boolean = true ・・・え?(´・ω・`)バグってなイカ? isValidByte の意味とは・・・? #Scala
Kenji Yoshida @xuwei_k
isValidByte って、BigIntの内部の値がByteの範囲に収まるか否かじゃないの? ゴゴゴゴゴゴゴゴゴ(・Д・`)??? #Scala
水島宏太(Erlang勉強中) @kmizu
@xuwei_k バグってますね。実装見るに、toIntとtoByteの結果を比較して判定していますが、このケースだと、toIntもtoByteも0返すのでアチャーな事になってるのかと。
Kenji Yoshida @xuwei_k
@kmizu そうですね、isValidByte の仕様の解釈が正しいとしたらバグってますね・・・。新たにバグが入ったとかではなく、2.9.1.finalでも2.8.1.finalでも同じ実装で同じ動作・・・
Kenji Yoshida @xuwei_k
これ、 isValidShort とか isValidInt も同じ実装だからバグるんじゃ・・・
Kenji Yoshida @xuwei_k
> set resolvers += ScalaToolsSnapshots して > set scalaVersion := "2.10.0-SNAPSHOT" で > console すると最新版の #Scala が試せる sbt !
Kenji Yoshida @xuwei_k
あー trunk だと override されてるから直ってるっぽい? http://t.co/T0fNAYq5
Kenji Yoshida @xuwei_k
http://t.co/0aTVBkTR あーそして、2.9.1で 「なんでBigInt に isValidLong だけないんだよ」 とか思ってたら、 trunk だと追加されてる・・・ #Scala
Kenji Yoshida @xuwei_k
ぐぬぬぬぬ、2.9.2 早く出ないかな・・・
Kenji Yoshida @xuwei_k
今試したら 2.9.2-SNAPSHOT だと バグったまま(´・ω・`) そして、isValidLong は 2.9.2-SNAPSHOT には今のところ追加されてなくて、 2.10.0-SNAPSHOT だけか・・・
ログインして広告を非表示にする
ログインして広告を非表示にする