パラメータなしではできない場合は、そのパラメータをそのままにしておく必要があります。小さいシグネチャを持つメソッドが好まれるからといって、各引数が必要な場合に長いメソッド シグネチャが悪いというわけではありません。
ただし、署名をごまかして短くしたい場合は、次のことを試してください。
class DoubleSeries
def self.generate_sequences(array_args)
seq1_start, seq2_start, seq1_step, seq2_step, iterations = *array_args
seq1,seq2=seq1_start,seq2_start
result=[]
(1..iterations).each do
result << seq1 << seq2
seq1+=seq1_step
seq2+=seq2_step
end
result
end
end
ただし、私が書いたものは、あなたが最初に書いたものよりも明確ではないと主張します (議論がはるかに曖昧であるため)。引数を 1 つしか持てないことを示すコード例を示しましたが、これは最善の方法ではない可能性があります。
必要なことを行う別の方法は、シーケンスの生成方法を変更することです。例えば
class DoubleSeries
def self.generate_sequence(seq1_start, seq1_step, iterations)
seq1=seq1_start
result=[]
(1..iterations).each do
result << seq1
seq1+=seq1_step
end
result
end
end
x = DoubleSeries.generate_sequence(1,5,5)
y = DoubleSeries.generate_sequence(4,6,5)
x.zip(y).flatten
または、Ruby 2.0 とLazy Enumeratorsを使用して:
range = 1..Integer::INFINITY
seq_1 = range.lazy.collect{|n| (n-start_1 % seq_1_step) == 0}.first(iterations)
seq_2 = range.lazy.collect{|n| (n-start_2 % seq_2_step) == 0}.first(iterations)
seq_1.zip(seq_2).flatten