引数の有無で挙動を変える
プロパティ的なもの作りたくて考えてみた。
neko tails #=> 1 が返る neko tails(2) #=> 2 を設定 neko tails #=> 2 になってる
call sender で呼び出し元のオブジェクトを得て、call argAt(0) name で引数の名前が得られる模様。
なので、
Object argif := method(narg, msg := call sender call if (msg argCount > narg, call sender setSlot(call argAt(1) name, call sender call sender doMessage(msg argAt(narg))) def(2), def(3) ) ) Neko := Object clone Neko init := method( self _tails := 1 ) Neko tails := method( argif(0, n, self _tails := n, self _tails) ) neko := Neko clone neko tails println neko tails(2) println neko tails println
これでOK?