簡體   English   中英

在 Ruby on Rails 4 中編寫此代碼的更好方法

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM