私は、間隔の開始が他の間隔の終わりと等しい場合、日付間隔を別の日付間隔とマージする方法を書いています。このメソッドをどのようにリファクタリングするのですか?
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
このメソッドは何を行うべきか説明できますか? 'スロット'とは何ですか?そして '自己 'は何ですか? – Stefan
OK、質問を更新しました。 – 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] 'のときに何を返そうとしていますか? –