これを正確に表現する方法はわかりませんが、多くの変数を定義してから、多くの変数のそれぞれを書き直したり、新しいブロックごとに冗長なコードを作成したりせずに、それらを再定義しようとしています。変数は、複数のデータベースからの配列要素を定義しています。これが私が扱っているものの縮小されたサンプルです:
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
2番目と3番目のブロックには、最初のブロック/メソッドから定義されたすべての変数が必要です。しかし、どうすればこれらすべての変数を渡すことができますか?私が読んだ1つの例は、それらすべてを次のようなパラメーターとして渡すことを提案しました。
def second_block(name, membership, spouse...)
しかし、これは、両方のブロックで各変数を2回定義するのと同じくらい混乱します。そのような状況への単純で乾いたアプローチは何ですか?質問で何か明確にする必要がある場合はお知らせください。ありがとうございます。