Alle mercoled13 giugno 2007, Sharon Phillips ha scritto:
> Hi,
>
> I have an hash of code blocks(procs?), @styles, and am trying to call
> these using method missing. Problem is, some take one argument, and
> others take two, and I can't seem to pass args to them without if
> being passed as an array
>
> Here's the method_missing code
>
>    def method_missing style_type, *args
>      case args.size
>        when 1 : @styles [style_type].call(args[0])
>        when 2 : @styles [style_type].call(args[0], args[1])
>      end
>    end
>
>
> I'm sure there's a way for me to get rid of the case statement, but
> if I try
> @styles [style_type].call(args) it just gets sent an array.
>
> Question is, how do I send the contents of the args array?
>
> I realise I should probably have a means of dealing with a genuine
> method_missing. What's the 'ruby way' of doing this? if I call
> method_missing again, wont I end in a recursive mess?
>
> Is this making any sense?
>
> Cheers,
> Dave

def method_missing style_type, *args
  @styles[style_type].call(*args)
end

I hope this helps

Stefano