From: Laurent Sansonetti Date: 2008-02-29T08:04:38+09:00 Subject: Re: [ANN] MacRuby On Thu, Feb 28, 2008 at 1:51 PM, Yukihiro Matsumoto wrote: > Hi, > > In message "Re: [ANN] MacRuby" > > on Fri, 29 Feb 2008 05:56:41 +0900, "Laurent Sansonetti" writes: > > |> duck.foo(1, bar: 2) # mapped to foo:bar: what does an > |> instance of C do with this? > | > |Here, MacRuby will check if duck responds to foo:bar:. If true, this > |message is sent with 1 and 2 as arguments. If not true, the foo > |message is sent instead with 1 and {:bar => 2} as arguments. > | > |If you're working with pure Ruby objects, the second code path should > |always be taken. Unless you define foo:bar: in your Ruby class. > | > |Note that the key:value syntax to describe a hash pair is available in > |vanilla 1.9. > > I still think having dedicated syntax for Objective-C call is better > than overriding normal call. > > > duck.foo: 1 bar: 2 > > or > > > duck.foo: 1, bar: 2 > > maybe? I am not sure if the parser allows this or not yet. > I have been thinking about this too, but I personally believe that it doesn't reveal very pretty when messaging Objective-C methods with only one argument. duck.foo: 1 But maybe we will switch to it soon, because it's more consistent with Objective-C (no potential ambiguities). But it doesn't feel very Ruby. Laurent