[英]Better way to write this code in Ruby on Rails 4
我是 Ruby 的新手,我正在做一個項目,同時也在學習。 我過去曾使用 Matlab 和 C 編寫代碼。
對於這個 Ruby 項目,我將變量保存在數組中,這對我來說很常見,但不知何故,我認為這不是一個使用 Ruby 的好主意。
這就是為什么我需要你的幫助。
您有更好的想法如何編寫以下 for 循環嗎? 我不想重復代碼(我想使用 DRY 原則),我認為應該有更好的方法來縮短代碼。
strombezugsvermeidung_kWh_a_eco4 = Array.new()
strombezugsvermeidung_kWh_a_eco6 = Array.new()
strombezugsvermeidung_kWh_a_eco8 = Array.new()
strombezugsvermeidung_kWh_a_eco10 = Array.new()
strombezugsvermeidung_kWh_a_eco12 = Array.new()
strombezugsvermeidung_kWh_a_eco14 = Array.new()
strombezugsvermeidung_kWh_a_eco16 = Array.new()
for i in 0..19
strombezugsvermeidung_kWh_a_eco4[i] = (autarkie_eco4 / 100) * jahrstromverbrauch
strombezugsvermeidung_kWh_a_eco6[i] = (autarkie_eco6 / 100) * jahrstromverbrauch
strombezugsvermeidung_kWh_a_eco8[i] = (autarkie_eco8 / 100) * jahrstromverbrauch
strombezugsvermeidung_kWh_a_eco10[i] = (autarkie_eco10 / 100) * jahrstromverbrauch
strombezugsvermeidung_kWh_a_eco12[i] = (autarkie_eco12 / 100) * jahrstromverbrauch
strombezugsvermeidung_kWh_a_eco14[i] = (autarkie_eco14 / 100) * jahrstromverbrauch
strombezugsvermeidung_kWh_a_eco16[i] = (autarkie_eco16 / 100) * jahrstromverbrauch
end
先感謝您。
我認為你最好像這樣保存數據:
strombezugsvermeidung_kWh_a_eco = {
4 => {
1 => <val a>,
2 => <val b>,
etc
6 => {
1 => <val c>,
2 => <val d>,
etc
},
etc
}
然后,您的代碼將包含以下內容
strombezugsvermeidung_kWh_a_eco[8][3]
代替
strombezugsvermeidung_kWh_a_eco8[3]
這樣你就有一個保存數據的變量,而不是名稱中帶有數字的大量變量,這通常是一個壞主意。
你可以這樣做:
autarkie_eco = {4 => <val a>, 6 => <val b>, 8 => <val c>, etc - set this in your code however}
strombezugsvermeidung_kWh_a_eco = {}
eco_values = [4,6,8,10,12,14,16]
eco_values.each do |eco_value|
for i in 0..19
strombezugsvermeidung_kWh_a_eco[eco_value] ||= {}
strombezugsvermeidung_kWh_a_eco[eco_value][i] = autarkie_eco[eco_value]/100 * jahrstromverbrauch
end
end
我不知道你的代碼庫,只是猜測,但你可能希望通過類似
strombezugsvermeidung[:kWh][:a][:eco][8][3] => val
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.