西@九大です。 From: matz / netlab.co.jp (Yukihiro Matsumoto) > あんまりその気になれないんですよねえ。インスタンス変数に代入 > したいなら、ちゃんと代入すべきではないかという気がして。 これを欲しがる人と必要としない人の違いは、「悔しさ」を感じるかどうか? という「性格の差」、だと最近思い始めました。(だから仕方がない、とも) 例えば、比較的多い(一行に入りきらないくらいの)インスタンス変数を持つよ うなクラスを初期化する場合、 ---------------------------------------------------------------------- def initialize (subject=nil, from=nil, addr=nil, host=nil, time=nil, contents=[], link=nil, ...) @subject, @from, @addr, @host, @time, @contents, @link = subject, from, addr, host, time, contents, link ... end ---------------------------------------------------------------------- と平気で書ける人がいます。(多分、まつもとさんはこっち) 一方で、 ---------------------------------------------------------------------- def initialize (@subject=nil, @from=nil, @addr=nil, @host=nil, @time=nil, @contents=nil, @link=nil) ... end ---------------------------------------------------------------------- って書きたいよー!こっちが綺麗じゃん。見易いじゃん。わかりやすいじゃん。 という人もいます。(多分、豊福さん。(すいません、一蓮托生です)) ちなみにわたしは、 「前者みたいに冗長なものは耐えられない。屈辱的だよ。むきー!」 という立場です。(該当部分を危険区域と呼び、息を止めて書きます) この「性格の差」を表す別の例として、 「"i+=1" でいーじゃん」派 vs 「"i++" じゃなきゃ死ぬ」派 の泥沼の戦いがあります。 > カスケードってもしかして > > open(path).instance_eval { > seek(0) > print "foo" > close > } > > とおなじもの? なんだ現状でできるじゃん。> 西さん なんと!なんだ現状でできるじゃん。> まつもとさん。 でも、.instance_eval が長くて実用的でない(?)ので、 open(path) { seek(0) print "foo" close } みたいに書けると最高なのですが、この為には文法の変更が必要ですよね。 #別にこの書式({})に拘ってる訳ではないです。 #object .mes1 ..mes2 ..mes3 とかでも、表記法は何でもいいです。 ていうか、このカスケード式メッセージも、恐らく前述の「気質」が原因で、 ---------------------------------------------------------------------- socket = TCPSocket.open(server, port) socket .write("GET " + path + " HTTP/1.0\r\n\r\n") socket .flush header = socket .read ---------------------------------------------------------------------- と書くのが、 [1] 余計な作業(中間?)変数(socket)を定義している。 [2] しかも、その変数はここでしか利用しない。(後でまた使うなら許せる) [3] さらに、それが何度も出てきて、冗長で何か悔しい。 という理由から、苦痛なんです。 やっぱり、 ---------------------------------------------------------------------- header = TCPSocket.open(server, port) { write("GET " + path + " HTTP/1.0\r\n\r\n") flush read } ---------------------------------------------------------------------- と書きたい。ああ、これだと精神衛生上、大変よろしいだろうなぁ。と。 でも多分、上の書き方でも全然平気なんですよね、まつもとさんは。。。 それでは。 ------------------------------------------------------------------ 九州大学大学院システム情報科学研究科 情報工学専攻 博士後期課程三年 西 和則 ( e-mail: kazunori / swlab.csce.kyushu-u.ac.jp ) ------------------------------------------------------------------