豊福@パパイヤです。

 サイン本狙いのメールラッシュもあって話題に追いつけ
ないです。本当は一本々々投稿プログラム見て勉強したい
んだけどこう投稿ラッシュだと... (^_^;)

>|「あらゆるメソッドを受けつけて各メソッドでは
>|何もしないオブジェクト」と
>|「あらゆるメソッドを受けつけて各メソッドでは
>|yield だけするオブジェクト」が
>|標準にあれば
> 
> 一応こんなんでもいけます。
> 
> class DoNothing
>   def method_missing(meth)
> #    self
>   end
> end
> 
> class DoEverything
>   def method_missing(meth)
>     yield
>   end
> end

  そうですね。いろいろ使い道があるようなら /dev/null
のように標準に準備しておけばと思ったのですが他に使い
道を思いつきませんでした。

 ところでまったくつまらない質問ですが method_missing
という名前のメソッドを作りたいとき(現実にはそんな
ことはないでしょうが)はどうするんですか。

>|class CondStack
>|	def initialize
>|		@condstack = Array.new
>|		@depth = 0
>|	end
>|	def push(cond)
>|		@condstack[@depth] = cond
>|		@depth = @depth + 1
>|	end
>|	def cond
>|		return @condstack[@depth]
>|	end
>|	def pop
>|		@depth = @depth - 1
>|	end
>|end
> 
> ここは Array#push, Array#pop を使うべきでは? @depth はいらな
> いはず。もっともそうしたら、 CondStack をわざわざ Class とし
> て定義しないで Array で十分かも。(^^;

  後に書かれているように END で pop するならそれでも
よいのですがそうでないと IF の中で( ELSE が来ない
ときのために必要な)Array#pop すると ELSE に条件値を
残せないと思ってこうしました。

> IF(), THEN{}, ELSE{}, END としたらどうでしょう。THEN で push、
> ENDで pop とした方がきれいかな。

 最初それも考えたのですが {} を書いているのにわざ
わざ END も書かせるのもどうかなと思って。
---
			豊福@パパイヤ
			unbound / papaya.juice.or.jp
			toyofuku / juice.or.jp