[#17615] substitution at when-clause — Takaaki Tateishi <ttate@...>
立石です.
まつもと ゆきひろです
At Tue, 2 Jul 2002 02:54:01 +0900,
まつもと ゆきひろです
At Tue, 2 Jul 2002 13:30:17 +0900,
まつもと ゆきひろです
立石です.
まつもと ゆきひろです
青山です。
立石です.
まつもと ゆきひろです
けいじゅ@日本ラショナルソフトウェアです.
まつもと ゆきひろです
けいじゅ@日本ラショナルソフトウェアです.
At Wed, 3 Jul 2002 17:48:58 +0900,
けいじゅ@日本ラショナルソフトウェアです.
まつもと ゆきひろです
けいじゅ@日本ラショナルソフトウェアです.
[#17625] Re: Getting CGI arguments as scalars — Wakou Aoyama <wakou@...>
青山です。
[#17662] update irb to cvs repository — keiju@... (Keiju ISHITSUKA)
けいじゅ@日本ラショナルソフトウェアです.
In article <200207041003.TAA06746.keiju@ishitsuka.com>,
けいじゅ@日本ラショナルソフトウェアです.
[#17676] generation GC — Minero Aoki <aamine@...>
あおきです。
[#17706] self in block — masaki <GEC01122@...>
[#17714] Re: self in block — masaki <GEC01122@...>
[#17722] Re: self in block — masaki <GEC01122@...>
[#17725] Re: self in block — masaki <GEC01122@...>
まつもと ゆきひろです
In article <1027176584.577546.14709.nullmailer@picachu.netlab.jp>,
まつもと ゆきひろです
At Sun, 21 Jul 2002 01:10:02 +0900,
まつもと ゆきひろです
[#17730] Re: self in block — masaki <GEC01122@...>
At Sat, 20 Jul 2002 21:27:58 +0900,
高橋征義です。
けいじゅ@日本ラショナルソフトウェアです.
[#17764] Re: self in block — masaki <GEC01122@...>
まつもと ゆきひろです
In article <1027383423.558649.31176.nullmailer@picachu.netlab.jp>,
まつもと ゆきひろです
In article <1027404202.545188.1283.nullmailer@picachu.netlab.jp>,
まつもと ゆきひろです
In article <1027406979.880878.1358.nullmailer@picachu.netlab.jp>,
まつもと ゆきひろです
In article <1027409151.187595.1406.nullmailer@picachu.netlab.jp>,
前田です。
In article <87bs8xkfqr.wl@studly.priv.netlab.jp>,
前田です。
[#17774] Re: self in block — masaki <GEC01122@...>
[#17832] Re: [ruby-cvs] ruby: * random.c: replace with Mersenne Twister RNG. — nobu.nakada@...
なかだです。
まつもと ゆきひろです
なかだです。
まつもと ゆきひろです
なかだです。
まつもと ゆきひろです
なかだです。
なかだです。
まつもと ゆきひろです
なかだです。
まつもと ゆきひろです
なかだです。
まつもと ゆきひろです
[#17840] Re: new mathn [Re: Rational#to_int ← String#center] — keiju@... (石塚圭樹)
けいじゅ@日本ラショナルソフトウェアです.
[#17851] undef_method ? — Shin-ichiro HARA <sinara@...>
原です。
[#17855] non-blocking IO — nobu.nakada@...
なかだです。
まつもと ゆきひろです
なかだです。
[#17867] parenthesize argument(s) for future version — Koji Arai <JCA02266@...>
新井です。
まつもと ゆきひろです
[ruby-dev:17639] Re: substitution at when-clause
まつもと ゆきひろです
In message "[ruby-dev:17635] Re: substitution at when-clause"
on 02/07/03, Takaaki Tateishi <ttate@kt.jaist.ac.jp> writes:
|僕はユーザ定義のオブジェクトをwhenに置くことができて,その値を
|得ることができると便利な場合があるというのが主張ですので,この
|ユーザ定義のものをwhenに置くことが妥当かどうかが意見が分かれて
|いる要因でしょうか?
いや、私もそういう場合があることには同意しますんで、どっちかっ
ていうと「それが妥当か」というよりも「それが言語を損なわない
か」というのが論点だと思います。
|設計/実装者は === を定義するときcase文で使って分かりやすいよう
|にするのではないかと,そして,
|=== はcase文のためにあるものと思っていたのですが…
case以外に直接 === を呼んでるケースもありますね、けっこう。
|> 新しい文法にした方が良いと思います(Perl6にならってgivenとか)。
|> 個人的にはそこまでの価値は無いような気もしますが。
|
|結局場合分けなので,caseの拡張が良いと思っています.
|case文が計算結果を用いた条件分岐だという意味からは外れないと僕は
|思っています.
でもねえ、正直なところ、
|case any_expr with :foo
|when a1 => r
| ...
|when a2 => r
| ...
|when a3 => r
| ...
|else
| raise ..
|end
このコードを見たときの動作は私には想像するのが難しいです。い
や、もちろん説明されたら分かりますけど、なんだか直感的でない。
それはなぜかと考えるとやっぱり、
|x = any_expr
|if( r = a1.foo(x) )
| ...
|elsif( r = a2.foo(x) )
| ...
|elsif( r = a3.foo(x) )
| ...
|else
| raise ...
|end
に比べて省略されているところが多いうえ、その省略された部分が
わりと本質だったりするからではないでしょうか。メソッド呼び出
しとか。
caseってのは実は立石さんの思っているような
|case文が計算結果を用いた条件分岐
ではないのかもしれません。polymorphismを利用するためにあるメ
ソッド(===)を呼んでますけど、その実態はただの多重分岐で、そ
れにむりやり「計算結果を用いた条件分岐」という「意味」を付与
すると破綻するんじゃないかと思います。
|ちなみに,'<'などを使いたいという話は以前ありましたね.
石塚さんは、はるか昔からそれを主張してましたね。もちろんはる
か昔から却下しつづけているので、いまでもそうなっていないわけ
なんですが。
|case any_expr with :<
|when 100
|when 10
|else
| ...
|end
|
|などとして,「○○より大きい場合」という場合分けもできて個人的には
|いいなぁとは思うのですが,case-withはややこしすぎるかもしれないとい
|うのはちょっと思っています.
これ導入しても絶対に使いこなせませんって。で、訳のわからない
プログラムの原因になるだけだと思います。明示的な方が良い場合
もあると思いますよ。
あと、OO的観点からは「caseは良くない、polymorphismを使え」と
いう格言があるので、よりcaseを拡張したくないというのも、もし
からしたらあるかも。
まつもと ゆきひろ /:|)