Ruby 2.0 a introduit les arguments nommés, appelés keyword argument dans la langue de Shakespeare, soit: «argument mot-clé». Ruby 2.1 ajoute la notion d’argument nommé et requis.

Voilà à quoi ça ressemble, un argument nommé:

def foo(arg: "hello")
  puts arg
end

foo #=> "hello"

Avant Ruby 2.1

Mais en Ruby 2.0, vous êtes obligé de donner une valeur par défaut:

[~]⇒ rvm use 2.0.0
[~]⇒ irb
>> def foo(arg:)
>>   puts arg
>> end
SyntaxError: (irb):10: syntax error, unexpected ')'

Imaginez que ça soit pareil avec les arguments dit normaux. On ne pourrait pas écrire:

def foo(arg)

On serait obligé d’écrire à la place:

def foo(arg="hello")

Un peu bizarre, non ?

Avec Ruby 2.1

On peut maintenant définir un argument nommé sans valeur par défaut, et donc faire en sorte qu’il soit requis:

[~]⇒ rvm use 2.1.0-preview1
[~]⇒ irb
>> def foo(arg:)
>>   puts arg
>> end
=> :foo
>> foo
ArgumentError: missing keyword: arg
>> foo "hello"
ArgumentError: missing keyword: arg
>> foo arg: "hello"
hello

Source (pdf) toruby

À demain.