在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