mrubyのInteger#<<の仕様あれこれ
Integerの左シフト調べたメモ書き
- mrubyにはデフォルトでBignumがないので、int32bitの範囲外になると暗黙的にfloatにキャストされる仕様である
- matz曰く、それら(int及びfloat)は等しく数値であるので区別しない
- で、SignedIntなのに符号ビットの考慮漏れしれた
- で、修正のPRだした
- https://github.com/mruby/mruby/pull/3023 #=>整数治ったけど、負数しっぱい><
- https://github.com/mruby/mruby/pull/3026 #=>負数も直したぞぃ、ふすぅ^〜
- https://github.com/mruby/mruby/pull/3023 #=>整数治ったけど、負数しっぱい><
- 終わり
C言語脳なので、1<<128 #=> 0とかになって欲しい。
ってか、0の戻り値をエラーにすれば、良いような?
0返すの0<
まあinteger#<<にエラーで0返すmruby仕様認めれば、float#<<とかのISO差分も失くせる*1し。
って考えてOptionalが欲しい思ったマル
*1:mrubyはfloat#<<は暗黙的にintegerに変換される。つまり(float.to_i).<<な感じに