From: "NAKAMURA, Hiroshi" Date: 2003-11-21T12:05:44+09:00 Subject: [ruby-list:38827] Re: new with module なひです。 > From: "NAKAMURA, Hiroshi" > Sent: Friday, November 21, 2003 12:01 PM > 大元の「スマートにやりたい」というのは、専用のクラス定義したり > するのがめんどくさいし、1行で読み易く書きたい、という意図だったので、 > こんな風にしてみました。使う側でなく、module側で > include Instanciableしなきゃいけないので、既存のモジュールには > 使いづらいですが。。。 > > module Instanciable > def self.included(mod) > class << mod > def new > o = Object.new > o.extend(self) > yield(o) > o > end > end > end > end > > module Helloable; include Instanciable > def hello > p "hello" > end > end > > o = Helloable.new do |o| > def o.hello > p "custom hello" > end > end > > o.hello ヘンな例でした。後半はこうかな。 module Helloable; include Instanciable def hello p say_hello end end obj = Helloable.new { |o| def o.say_hello "custom hello" end } obj.hello # こっそりoの2重使いを修正。