On 2/28/08, Yukihiro Matsumoto <matz / ruby-lang.org> wrote:
>     on Fri, 29 Feb 2008 05:56:41 +0900, "Laurent Sansonetti" <laurent.sansonetti / gmail.com> 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

or

    duck.dispatch("foo:bar:", 1, 2)

or any other acceptable name for dispatch, which is an objective-c
flavor of __send__.  Of course the problem with this is that MacRuby
is trying to build ruby on top of Objective-C mechanisms, rather than
the other way around.

-- 
Rick DeNatale

My blog on Ruby
http://talklikeaduck.denhaven2.com/