[MacRuby-devel] super_foo style RubyCocoa messages.

Eloy Duran eloy.de.enige at gmail.com
Mon May 5 11:06:52 PDT 2008


>> I've started work on a RubyCocoa layer for MacRuby (still very  
>> naive).
>>
>> Like already discussed with Laurent, an API to be able to call the  
>> superclass implementation of a method
>> will be necessary for super_foo style methods to work. Imagine this  
>> code:
>>
>> class Foo < OSX::NSObject
>> def init
>>   self if super_init
>> end
>> end
>>
>> Something like this will be needed:
>>
>> class OSX::NSObject
>> def method_missing(mname, *args, &block)
>>   if superclass_method?(mname)
>>     # convert mname to selector
>>     super_send(selector, *args) # <- #super_send (or something like  
>> it) should be able to send a message to the superclasses  
>> implementation.
>>   else
>>     original_method_missing(mname, *args, &block)
>>   end
>> end
>> end
>>
>> I hope this is clear enough?
>
> It is, but I have to say that I always found the super_foo syntax  
> confusing in RubyCocoa. That's probably because I came to Ruby from  
> ObjC, not ObjC from Ruby... I kept wishing that:
>
>  super.foo() would work. Is that possible?

Hi Pierce,

That syntax wouldn't work because calling "super" will call the method  
you're in from the superclass.
AND it may/will return an object. In your example you are calling #foo  
on the result object of the super call.

But that would be the functionality I suggest yes.

About the weird syntax in RubyCocoa, I agree.
But this wouldn't be a compatibility layer without supporting it's  
intricacies now would it :)

Eloy

PS: Is it me or is the return-path for the emails coming from the ML  
incorrect? I guess it should point to macruby- 
devel at lists.macosforge.org instead of Pierce...



More information about the MacRuby-devel mailing list