В проекте Rails я собираю хэш с 10-15 парами ключ-значение и передаю его классу (объекту службы) для создания экземпляра. Свойства объекта должны быть установлены из значений в хеше, за исключением случаев, когда нет значения (или nil
). В этом случае свойство будет желательно установить значение по умолчанию.Передача `nil` в метод с использованием параметров по умолчанию по умолчанию
Вместо того, чтобы проверять, не было ли каждое значение в хеш не nil
перед созданием объекта, я хотел бы найти более эффективный способ сделать это.
Я пытаюсь использовать именованные параметры со значениями по умолчанию. Я не знаю, имеет ли это смысл, но я хотел бы использовать значение по умолчанию при вызове параметра с nil
. Я создал тест для этой функции:
class Taco
def initialize(meat: "steak", cheese: true, salsa: "spicy")
@meat = meat
@cheese = cheese
@salsa = salsa
end
def assemble
"taco with: #@meat + #@cheese + #@salsa"
end
end
options1 = {:meat => "chicken", :cheese => false, :salsa => "mild"}
chickenTaco = Taco.new(options1)
puts chickenTaco.assemble
# => taco with: chicken + false + mild
options2 = {}
defaultTaco = Taco.new(options2)
puts defaultTaco.assemble
# => taco with: steak + true + spicy
options3 = {:meat => "pork", :cheese => nil, :salsa => nil}
invalidTaco = Taco.new(options3)
puts invalidTaco.assemble
# expected => taco with: pork + true + spicy
# actual => taco with: pork + +
благодарит за помощь форматирования Савва – phpete