From: "K.Kosako" Date: 2001-05-21T14:04:45+09:00 Subject: [ruby-list:29736] Re: with(obj){ } が欲しい。 Akinori MUSHAさんの<86k83eee1t.wl@archon.local.idaemons.org>から > def with(*args) { yield(*args) } > > で十分なんじゃなかろうかという気がしてきました。 > > with (object_with_a_long_name.long_method) { |o| > o.meth1 = var1 > o.meth2 var2, var3 > } > > 省略するために高いコストをかけなくても、たったこれだけで十分短く > できちゃう。 なるほど。 ブロック変数を宣言するのも面倒なので、 以下のようにしてみました。 もうwithでも何でもなくて、外側のローカル変数が見える局所スコープを 作り出す方法になってしまいました。 def with; yield; end long_name_obj = Object.new with { _ = long_name_obj p _.type _.instance_eval { p self } } ---- 小迫@ソフネック 渋谷区恵比寿1-15-1