From: keiju@... (=?ISO-2022-JP?B?GyRCQFBETTc9PHkbKEI=?=) Date: 2002-07-08T20:20:24+09:00 Subject: [ruby-dev:17685] Re: substitution at when-clause けいじゅ@日本ラショナルソフトウェアです. In [ruby-dev:17681] the message: "[ruby-dev:17681] Re: substitution at when-clause", on Jul/06 08:26(JST) TAKAHASHI Masayoshi writes: >高橋征義です。 >判りづらいというより、case〜when〜との違いがどの辺に >あるのかがよく判らなかったというか。 ちょっと説明不足でしたかね. >なるほど。 >逆に、この構文でcase〜when〜構文を書こうとすると、 > >for x case v === x >when a > .... > >という感じになるわけですよね。 です. と思いましたが逆です(^^;;; for x case x === v when a です. when節ので与えられた実引数が, for節のパラメータに代入されます. # あ, でも, 下の説明ではわかっていらっしゃるので, 書き間違っただけでしょ # うね. >つまり、case〜when〜else〜endでは、 > > * 比較方法は(基本的には) === のみ > (case節の引数が省略された場合はwhen節の真偽値を使うけど、 > まあそれは例外なんで) > * when節で指定するオブジェクトはレシーバになる > >という制約があったのに対し、 そうです. でも, case節の引数が省略されたらlispの(cond)になるのは初めて 知りました(^^;;; >新構文では、 > > * 任意のメソッド・式の形で比較可能 > * when節で指定するオブジェクトはfor節で指定した変数として > 任意の形で使用可能 > >という感じに拡張された、というところでしょうか。こう考えると >構文的にも意味的にもすっきりしますね。 そういってもらえると嬉しいです. ># あとはcaseの代替語を考えるだけ? それも大きいですが, やはりどのくらい使えるものなのかを示さなくてはなら ないかと... __ ..............................石塚 圭樹@日本ラショナルソフトウェア... ----------------------------------->> e-mail: keiju@rational.com <<---