mrubyのInteger#<<の仕様あれこれ

Integerの左シフト調べたメモ書き

  1. mrubyにはデフォルトでBignumがないので、int32bitの範囲外になると暗黙的にfloatにキャストされる仕様である
  2. で、SignedIntなのに符号ビットの考慮漏れしれた
  3. で、修正のPRだした
  4. 終わり

C言語脳なので、1<<128 #=> 0とかになって欲しい。
ってか、0の戻り値をエラーにすれば、良いような?
0返すの0<> widthになって、0を返しうるから面倒くさなこれ><<、、


まあinteger#<<にエラーで0返すmruby仕様認めれば、float#<<とかのISO差分も失くせる*1し。


って考えてOptionalが欲しい思ったマル

*1:mrubyはfloat#<<は暗黙的にintegerに変換される。つまり(float.to_i).<<な感じに