1
我寫了一個方法來合併日期間隔與另一個日期間隔,如果間隔的開始等於另一個間隔的結束。如何重構此方法?
def merge
slots.each do |slot|
if self.start == slot.end
slot.end = self.end
slot.save
return self
elsif self.end == slot.start
slot.start = self.start
slot.save
return self
end
end
self.save
end
self
是,我想與任何存在的slots
陣列中的間隔合併它的時間間隔。 重構此方法的最佳方法是什麼?
我嘗試沒有成功把它弄成這個樣子:
def merge
slots.each do |slot|
if slot.one_bound == slot.other_bound
slot.other_bound = self.other_bound
slot.save
return self
end
end
self.save
end
你能解釋一下這個方法應該做什麼嗎?什麼是'slot'和什麼是'self'? – Stefan
好的,我更新了我的問題。 – Sajjad
推測,'merge'是類Range的一個實例方法。那是對的嗎? 'slots'似乎是一個包含範圍數組的局部變量,如果是這樣,那麼會引發異常,因爲'slots'既沒有傳遞給merge方法,也沒有在merge中定義。如果'self = 1..3'和'slots = [0..1,3..5]'是否要將self的值(並返回相同的值)替換爲'0..5'?如果'self = 1..2'和'slots'是相同的,你是否希望返回'0..2'?當self = 1..2'和'slots = [3..5,5..7]'時,你想要返回什麼? –