次のようなコードがあります
@a.each{ |n|
if n == i then
@b.push n
n = 2*n
end
}
array を反復処理したいのですが@a
、条件n == i
が真の場合は、現在の要素n
を使用して do を実行し@b.push n
、その場で更新しn = 2*n
ます。選択と変更を繰り返すにはどうすればよいですか?
@a.each.with_index do |n, j|
next unless n == i
@b.push(i)
@a[j] = 2 * i
end
配列が大きい場合、NArray はこれを非常に高速に行うことができます。
require 'narray'
# Some sample data:
a = NArray.int(100000).random(10)
i = 8
# b is a "boolean" array that can be used to select or modify
# only certain elements in a
b = a.eq i
a[b] *= 2
初期配列@a
が大きく、パフォーマンスが心配な場合は、これを試してみてください。
each_with_index
解決済みの問題を使用して
@a.each_with_index{ |n,q|
if n == i then
@b.push n
@a[q] = 2*n
end
}