From: TAKAHASHI Masayoshi Date: 2002-07-06T08:26:26+09:00 Subject: [ruby-dev:17681] Re: substitution at when-clause 高橋征義です。 keiju@rational.com (石塚圭樹) wrote: > >えーと、その前に構文の意味がよく判らないのですが、 > > うーん... わかりづらいかなぁ... 判りづらいというより、case〜when〜との違いがどの辺に あるのかがよく判らなかったというか。 > >にほぼ相当する、ということでいいんでしょうか? > > です. なるほど。 逆に、この構文でcase〜when〜構文を書こうとすると、 for x case v === x when a .... という感じになるわけですよね。だいたい判ってきました。 > です. いいこと言いますね. その通りで, 評価式中でwhenに渡すパラメータが > レシーバにも引数にもなれるところが, ミソです. > > # 一般には f = proc{|x| expr_with_x} ですけど. つまり、case〜when〜else〜endでは、 * 比較方法は(基本的には) === のみ (case節の引数が省略された場合はwhen節の真偽値を使うけど、 まあそれは例外なんで) * when節で指定するオブジェクトはレシーバになる という制約があったのに対し、新構文では、 * 任意のメソッド・式の形で比較可能 * when節で指定するオブジェクトはfor節で指定した変数として 任意の形で使用可能 という感じに拡張された、というところでしょうか。こう考えると 構文的にも意味的にもすっきりしますね。 # あとはcaseの代替語を考えるだけ? 高橋征義 (TAKAHASHI Masayoshi) E-mail: maki@rubycolor.org