2013-06-22 22 views
-2

我该如何干这个红宝石哈希阵列?重复代码是一种气味,但我不知道如何清理它。我该如何干这个红宝石哈希阵列?

38 def get_parts(row) 
39  [ 
40  @@line_parts[row][@time[0]].values[0], 
41  @@line_parts[row][@time[1]].values[0], 
42  @@line_parts[row][@time[2]].values[0], 
43  @@line_parts[row][@time[3]].values[0] ] 
44 end 
+0

使用循环?四 –

+0

某些事情对我来说似乎也很可疑是'@@ line_parts'。即使你正在显示的小代码,你使用的数组或散列数组似乎是错误的。这看起来更像是一个数组实例的工作。 –

+2

为了让这个问题留在系统中,可能需要通过显示你已经考虑/尝试过的东西来改进。否则,它可以被视为一个“解决我的问题,所以我不必去做”的情况,这是令人沮丧的。 –

回答

14
def get_parts(row) 
    (0..3).collect {|i| @@line_parts[row][@time[i]].values[0]} 
end 

注使用红宝石以下特征:

  • 范围 - (0..3)
  • 地图 - (收集)
  • 紧凑块 - ({ ..})
+5

+1另一种方式:'@time [0..3] .map {| t | @@ line_parts [row] [t] .values.first}'。 – FMc