#quo: と #rem: は誰がために。

基本的なことを知らないと言えば、#// と #quo: 、#\\ と #rem の違いです。

#// は 商の整数部を #\\ はその余りを求める メソッドです。一方の #quo: と #rem: も それぞれ 商の整数部と 剰余を求めるメソッドで、「はてな、なんで同じモノが二つあるんだろう」と言った具合です。

猫は #// と #quo: って、同じ処理の単なる別名だと思っていたのですが、本当は細かいところで動きが違う、別のメソッドでした。

 9 //  2 "-->"  4
 9 // -2 "-->" -5
-9 //  2 "-->" -5
-9 // -2 "-->"  4

 9 quo:  2 "-->"  4
 9 quo: -2 "-->" -4
-9 quo:  2 "-->" -4
-9 quo: -2 "-->"  4

結果がマイナスだったとき、 #// は 結果をマイナスに近づけます。一方 #quo: は結果を 0 に近づけます。#\\ は #// に対する余り、 #rem: は #quo: に対する余りなので、当然

-9 \\ 2    "-->"   1
-9 rem: 2  "-->"  -1

になります。うーん、こんな基本的なところを知らないで・・・orz. ここは一つ、「また一歩お利口さんになっちゃった。てへ♪」と言うことにしておきましょう。