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!!!