On Tue, 14 Jun 2011 09:48:14 +0300, Ary Manzana <a...@esperanto.org.ar> wrote:

Well, that's the way Ruby works :-)

In fact, in Ruby there are no named arguments. So people came up with this idea.

def some_function(param_a, param_b, options = {})
   param_c = options['param_c'] || default_for_c
   param_d = options['param_d'] || default_for_d
end

The last argument is a hash (a dictionary) with a default value of an empty hash.

So you can call it:

some_function(1, 2)
some_function(1, 2, {'param_c' => 3})
some_function(1, 2, {'param_c' => 3, 'param_d' => 4})

But in Ruby there's a rule: you can skip parenthesis. And you can skip the brackets for a hash if it's the last argument. And instead of strings symbols are much nicer and efficient. So...

some_function 1, 2
some_function 1, 2, :param_c => 3
some_function 1, 3, :param_c => 3, :param_d => 4

Of course this won't work in D because passing hashes all the time would be very inneficcient. But I think positional arguments first, named arguments last is a simple rule that's easy to follow and probably implement (maybe when I'll go back to my country I'll try to implement it).

Tell me this is not true! :)
So ruby don't have named arguments and the community came up with a solution which is by the look of it heavily influenced by language capabilities. No offense and please no kicking butts but... This is madness!!!

Reply via email to