引数の有無で挙動を変える

プロパティ的なもの作りたくて考えてみた。

	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?