From: keiju@... (=?ISO-2022-JP?B?GyRCQFBETTc9PHkbKEI=?=) Date: 2002-07-03T17:48:58+09:00 Subject: [ruby-dev:17647] Re: substitution at when-clause けいじゅ@日本ラショナルソフトウェアです. In [ruby-dev:17645] the message: "[ruby-dev:17645] Re: substitution at when-clause", on Jul/03 17:01(JST) Yukihiro Matsumoto writes: >まつもと ゆきひろです >|case {|v| v === x} >|when v1 >| ... >|when v2 >| ... >|else >| ... >|end > >うむ。「美しくない^^;;;」という点以外には文句なしですね。 >今までのcase関連の石塚さんの案の中で一番できが良いです。 美しくないかぁ... 確かにそうかも知れないけど... >無理にブロックを渡すんでなく、専用の構文を用意したほうが「美 >しい」とは思いますが、基本的な方向は非常に面白いと思います。 では, 以下のようなものは? switch v case v === x when v1 ... when v2 ... else ... end または, caseをinに置き換えたものとか, いかのとか... for v case v == x when v1 ... when v2 ... else end あと, パラメータを複数導入して. v1 = ... v2 = ... for x,y case x === v1 && y === v2 when Integer, Integer when Integer, Float ... else end なんてこともできますね(when以降の解釈がcaseと異なっちゃいますが). あ. あと, 構文を導入すれば >余計に,"when ... => vars" が欲しくなってしまうのですが… (^^; >case {|v| v.foo(any_expr)} >when a1 => r1 > ... >when a2 => r2 > ... > >という感じで… は for v case r = v.foo(any_expr) when a1 ... となりますので, => はそれほどほしくならないかも __ ..............................石塚 圭樹@日本ラショナルソフトウェア... ----------------------------------->> e-mail: keiju@rational.com <<---