迭代数组和对象属性的更好方法?
A better method to iterate over an array and object attributes?
我找到了一个有效的解决方案,但我做了一些繁重的 copy/paste 块,只有实例的参数发生了变化(myobject.red、myobject.blue、myobject.yellow)。我尝试重构这个方法。有一个Myobject的实例,我需要在每个参数中推送数据。我认为它在某处存在一个优雅的解决方案。
为了创建一组数据,我遍历了一个数组。数组的每个结果都需要推送到实例的相应参数中。谢谢
class Myobject
def initialize
@blue = blue
@red = red
@yellow = yellow
end
end
def mymethod
param = ['foo','bar','jaa']
param.each { |param|
case param
when 'foo'
data = collect_method
myobject.blue.push(data)
when 'bar'
data = collect_method
myobject.red.push(data)
when 'jaa'
data = collect_method
myobject.yellow.push(data)
end
end
end
def mymethod
params = {'foo'=>:blue,'bar'=>:red,'jaa'=>:yellow}
params.each do |k,v|
my_object.send(v).push(collect_method(k))
end
end
其中 collect_method 是 Myobject 中的另一个方法 class
我找到了一个有效的解决方案,但我做了一些繁重的 copy/paste 块,只有实例的参数发生了变化(myobject.red、myobject.blue、myobject.yellow)。我尝试重构这个方法。有一个Myobject的实例,我需要在每个参数中推送数据。我认为它在某处存在一个优雅的解决方案。
为了创建一组数据,我遍历了一个数组。数组的每个结果都需要推送到实例的相应参数中。谢谢
class Myobject
def initialize
@blue = blue
@red = red
@yellow = yellow
end
end
def mymethod
param = ['foo','bar','jaa']
param.each { |param|
case param
when 'foo'
data = collect_method
myobject.blue.push(data)
when 'bar'
data = collect_method
myobject.red.push(data)
when 'jaa'
data = collect_method
myobject.yellow.push(data)
end
end
end
def mymethod
params = {'foo'=>:blue,'bar'=>:red,'jaa'=>:yellow}
params.each do |k,v|
my_object.send(v).push(collect_method(k))
end
end
其中 collect_method 是 Myobject 中的另一个方法 class