From: Eric Hodel Date: 2005-05-18T02:04:52+09:00 Subject: Re: Forwardable, reworked On 17 May 2005, at 04:36, Daniel Berger wrote: > --- Robert McGovern wrote: > >>> class Foo >>> extend Forwardable >>> >>> delegate :to_i => :@number >>> delegate [:to_s, :reverse] => :@string >>> >>> def initialize >>> @number = 5 >>> @string = "foobar" >>> end >>> end > > This should do the trick: > > def delegate(hash) > hash.each{ |methods, accessor| > methods = methods.to_s if methods.kind_of?(Symbol) > methods.each{ |method| > def_instance_delegator(accessor, method) > } > } > end I think I would rather see: delegate :@number, :to_i delegate :@string, :to_s, :reverse def delegate(ivar, *methods) methods.each { |method| def_instance_delegator ivar, method } end The kind_of? feels so clumsy. (And I forgot how String#each worked since I never use it.) -- Eric Hodel - drbrain@segment7.net - http://segment7.net FEC2 57F1 D465 EB15 5D6E 7C11 332A 551C 796C 9F04