From: matz@... (Yukihiro Matsumoto) Date: 1999-10-28T12:14:55+09:00 Subject: [ruby-list:18064] Re: i++ に見る性格の差 まつもと ゆきひろです In message "[ruby-list:18055] i++ に見る性格の差" on 99/10/28, Kazunori NISHI 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に載ってる方 はこっちをイメージしてます)、ずーっと考えてるんですが(あんま り一生懸命じゃないけど)、文法が決まらない。 まつもと ゆきひろ /:|)