演算子によって、一項か二項か扱いが違う?
インクリメント演算子を実装してみて、気づいたけれど、
hoge ++ moge
と、しても moge が引数にならなくなったようだ。
ただ、これは演算子に依るようで、右辺(?) が引数扱いになるものもあるみたい。
m := method( v, "call message arguments => " print call message arguments println "call message next => " print call message next println "v => " print v println ) Number % := getSlot("m") Number %% := getSlot("m") Number @ := getSlot("m") Number @@ := getSlot("m") "<<% のばやい>>" println (1 % 2) println "<<%% のばやい>>" println (1 %% 2) println "<<@ のばやい>>" println (1 @ 2) println "<<@@ のばやい>>" println (1 @@ 2) println
このコードの結果
<<% のばやい>> call message arguments => list(2) call message next => nil v => 2 2 <<%% のばやい>> call message arguments => list() call message next => 2 v => nil 2 <<@ のばやい>> call message arguments => list(2) call message next => nil v => 2 2 <<@@ のばやい>> call message arguments => list(2) call message next => nil v => 2 2
io のバージョンは、20090105
正確な仕様は?
この辺りはどこかにドキュメントされているのかな?