這是代碼:如何減少Ruby代碼?
def explaination_exists
explaination_exists_flag = false
if self.explanation1.length > 5
explaination_exists_flag = true
end
if self.explanation2.length > 5
explaination_exists_flag = true
end
if self.explanation3.length > 5
explaination_exists_flag = true
end
if self.explanation4.length > 5
explaination_exists_flag = true
end
unless explaination_exists_flag
errors.add(:base, 'Atleast one explanation should be there.')
end
end
我想將代碼減少到單個線路碼,由於除了交代[數字]沒有變化。
我已經試過這樣:
def explaination_exists
explaination_exists_flag = false
(1..4).each do |i|
if self."explanation#{i}".to_sym.length > 5
explaination_exists_flag = true
break
end
end
unless explaination_exists_flag
errors.add(:base, 'Atleast one explanation should be there.')
end
end
我知道這是愚蠢的,但你可以建議我改變一些可能的工作。
謝謝!
每當你有一個很長的變量名列表,看起來像var'i'..''''。您正在使用錯誤的數據結構來存儲該信息。請重構獲得'解釋'1,2,3的代碼....也許有更好的方法來存儲這些變量。可能在數組中? – bsd