我是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
提前谢谢。
答案 0 :(得分:3)
我认为你最好像这样持有数据:
UPDATE
然后,您的代码将具有类似
的内容 count = dgvStatus.Rows.Count;
for (int i = 0; i < count; i++)
{
string Name = dgvStatus.Rows[i].Cells[0].Text;
string IP = dgvStatus.Rows[i].Cells[1].Text;
try
{
Ping ping = new Ping();
PingReply reply = ping.Send(IP, 5000);
if (reply.Status == IPStatus.Success)
{
result = "UP";
Label status = (Label)dgvStatus.Rows[i].FindControl("lblstatus");
status.Text = result;
Panel panel = (Panel)dgvStatus.Rows[i].FindControl("Panel1");
panel.BackColor = Color.Green;
}
else
{
result = "DOWN";
Label status = (Label)dgvStatus.Rows[i].FindControl("lblstatus");
status.Text = result;
Panel panel = (Panel)dgvStatus.Rows[i].FindControl("Panel1");
panel.BackColor = Color.Red;
}
}
catch (PingException)
{
result = "UNREACHABLE";
Label status = (Label)dgvStatus.Rows[i].FindControl("lblstatus");
status.Text = result;
Panel panel = (Panel)dgvStatus.Rows[i].FindControl("Panel1");
panel.BackColor = Color.Red;
}`
而不是
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]