Prenez la classe suivante:Réflexion sur les paramètres de la méthode en Ruby
class Automator
def fill_specific_form(fields)
fields.each_pair do |key, value|
puts "Setting '#{key}' to '#{value}'"
end
end
end
a = Automator.new
a.fill_specific_form :first_name => "Mads", :last_name => "Mobæk"
# => Setting 'first_name' to 'Mads'
# => Setting 'last_name' to 'Mobæk'
Est-il possible de faire la même chose sans un hachage? Étant donné que tous les paramètres sont nécessaires, je veux une méthode avec la signature suivante:
fill_specific_form(first_name, last_name)
Dans mon esprit, cela serait possible en ayant le corps de la méthode réfléchir et itérer sur ses paramètres, réalisant ainsi le même résultat.
Comment implémenteriez-vous cela? Est-ce qu'un patron/idiome pour cela existe déjà? Deux avantages évidents seraient les informations de paramètres dans les IDE et ne pas avoir à vérifier si toutes les clés de hachage sont fournies.
Ce que je veux éviter est:
puts "Setting first_name to #{first_name}"
puts "Setting last_name to #{last_name}"
# and so on
Dupliquer de [Ruby - affiche le nom de la variable puis sa valeur] (http://stackoverflow.com/questions/2603617/ruby-print-the-variable-name-and-then-its-value) –
This est un doublon de [Existe-t-il un moyen de renvoyer un nom de paramètre de méthode dans ruby] (http://StackOverflow.Com/q/2452077/#2452322). –