Stefano Crocco
6/13/2007 1:51:00 PM
Alle mercoledì 13 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