Возьмите следующий класс:
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'
Можно ли сделать то же самое без хеша?Поскольку все параметры обязательны, я хочу метод со следующей сигнатурой:
fill_specific_form(first_name, last_name)
На мой взгляд, это было бы возможно, если бы тело метода отражало и перебирало его параметры, таким образом достигая того же результата.1007 *
Как бы вы это реализовали?Шаблон / идиома для этого уже существует?Два очевидных преимущества - это информация о параметрах в IDE и отсутствие необходимости проверять, предоставлены ли все хеш-ключи.
Чего я хочу избежать, так это:
puts "Setting first_name to #{first_name}"
puts "Setting last_name to #{last_name}"
# and so on