まつもと ゆきひろです
In message "[ruby-list:18055] i++ に見る性格の差"
on 99/10/28, Kazunori NISHI <kazunori / swlab.csce.kyushu-u.ac.jp> writes:
|これを欲しがる人と必要としない人の違いは、「悔しさ」を感じるかどうか?
|という「性格の差」、だと最近思い始めました。(だから仕方がない、とも)
そーですねえ。ま、Rubyが私の趣味と嗜好を反映しているのは事実
です。でもって、メッセージの前の . の前にスペースを置く人に
やさしくないと。
|> カスケードってもしかして
|>
|> open(path).instance_eval {
|> seek(0)
|> print "foo"
|> close
|> }
|>
|> とおなじもの? なんだ現状でできるじゃん。> 西さん
|
|なんと!なんだ現状でできるじゃん。> まつもとさん。
|でも、.instance_eval が長くて実用的でない(?)ので、
|
| open(path) {
| seek(0)
| print "foo"
| close
| }
|
|みたいに書けると最高なのですが、この為には文法の変更が必要ですよね。
|#別にこの書式({})に拘ってる訳ではないです。
そうですね。これだとブロックになっちゃいますね。現状だと
open(path) {|f| f.seek(0); f.print "foo"; f.close}
という目的に使ってますからこの文法は使えませんね。
instance_evalが長いと言うことならば、
def x(obj, &block)
obj.instance_eval(&block)
end
のような関数xを作って
x(open(path)) {
seek(0)
print "foo"
close
}
とか、
module Kernel
def x(&block)
instance_eval(&block)
end
end
として
open(path).x {
seek(0)
print "foo"
close
}
とかできるんでないかと思います。xには好きな名前をお選びくだ
さいませ。
|ああ、これだと精神衛生上、大変よろしいだろうなぁ。と。
|でも多分、上の書き方でも全然平気なんですよね、まつもとさんは。。。
気持は分からないでもないです。Ruby/Tkではそういうやり方を採
用したこともありますから。でも、selfがすりかわるってのは、結
構イヤらしい問題を引き起こすんですよねえ。
|#別にこの書式({})に拘ってる訳ではないです。
|#object .mes1 ..mes2 ..mes3 とかでも、表記法は何でもいいです。
というような文法ならそういう問題はないんで(ToDoに載ってる方
はこっちをイメージしてます)、ずーっと考えてるんですが(あんま
り一生懸命じゃないけど)、文法が決まらない。
まつもと ゆきひろ /:|)