我不知道如何准确地表达这个,但我试图定义许多变量,然后重新定义它们,而不需要重写许多变量中的每一个,并在我编写的每个新块中创建冗余代码。变量定义来自多个数据库的数组元素。这是我正在使用的缩小样本:
def lots_of_vars(array)
name = array[1]
membership = array[2]
spouse = array[3]
....
lap12 = array[36]
end
def second_block
#database1 => [ "Randy", true, "Nancy", 2, 17, false...
lots_of_vars(database1)
return unless membership
puts "Lap progress for #{name} and #{spouse}: #{lap1}, #{lap2}... #{lap12}..."
end
def third_block
#database2 => [ "Steven", true, nil, 0, 5, false...
lots_of_vars(database2)
return unless spouse.empty? or spouse.nil?
puts "Weekly progress for #{name}: #{lap1}, #{lap5}, #{lap6}, #{lap10}..."
end
第二个和第三个块需要从第一个块/方法定义的所有变量。但是我如何传递所有这些变量?我读过的一个例子建议我将它们全部作为参数传递,例如:
def second_block(name, membership, spouse...)
但这与在两个块中定义每个变量两次一样混乱。处理这种情况的简单、干燥的方法是什么?如果我需要澄清我的问题中的任何内容,请告诉我,谢谢。