À l'heure actuelle (Ruby 2.0.0-preview1), vous pouvez utiliser la signature de méthode suivante :
def say(greeting: greeting_to_say)
puts greeting
end
El greeting_to_say
est juste un espace réservé qui ne sera pas évalué si vous fournissez un argument au paramètre nommé. Si vous ne le passez pas (en appelant simplement say()
), ruby lèvera l'erreur :
NameError: undefined local variable or method `greeting_to_say' for (your scope)
Cependant, cette variable n'est liée à rien et, pour autant que je sache, ne peut être référencée à l'intérieur de votre méthode. Vous pouvez toujours utiliser greeting
comme variable locale pour référencer ce qui a été transmis pour le paramètre nommé.
Si tu allais vraiment faire ça je recommande d'utiliser def say(greeting: greeting)
afin que le message d'erreur fasse référence au nom que vous donnez à votre paramètre. J'ai seulement choisi des noms différents dans l'exemple ci-dessus pour illustrer ce que ruby utilisera dans le message d'erreur que vous obtiendrez pour ne pas avoir fourni un argument au paramètre nommé requis.
Tangentiellement, si vous appelez say('hi')
ruby va lever ArgumentError: wrong number of arguments (1 for 0)
ce qui est un peu déroutant, mais ce n'est qu'un aperçu 1.