なかだです。

At Mon, 19 Jul 1999 12:40:10 +0900,
ARIMA Yasuhiro <fit0298 / fitec.co.jp> wrote:
> Ruby でも同様の記述をしたいのですが、なにか方法はありますか?
> やっとこさ思いついたのは以下のようなものです。
> 
>   foo.bar.baz.with do |x|
>     x.a = x.b
>     x.c = x.d
>   end

module Kernel
  def with; yield self end
end

ではどうでしょうか?

> できれば、以下ぐらいで書きたいのですが。
> 
>   foo.bar.baz.with do |x|
>     .a = .b
>     .c = .d
>   end

  これはあくまで主観ですが、ここまで省略してしまうとあまり使い勝手が良く
ないように思います。とくにネストしたときに混乱の元になりそうで、デメリッ
トの方が気になります。

> Gtk::Style.new.with do |style|
>   .set_font Gdk::Font.fontset_load '-adobe-helvetica-bold-r-normal--18-*'
>   .set_fg(Gtk::STATE_NORMAL, 10000, 50000, 60000)
>   .set_bg(Gtk::STATE_NORMAL, 65535, 50000, 50000)
>   Gtk::Widget.push_style style
> end

  こういうのは instance_eval でいいんじゃないかと思いますが。本来継承し
た initialize でやるべきだけれど、一々クラスを新しく作りたくないというと
きの省略法といった感じで。

-- 
♪だって だって だって だって Bugってるから♪
           中田 "ねぇ hoge ってして♪" 伸悦