定型的なベンチマークコードを作成するために、列挙可能なブロック内で収穫したいと考えています。Ruby:数量内の収量
基本的に私はこの(簡体字)何かをしたいと思います:
def iterator(enumerable, &block)
iterations = enumerable.size
counter = 0
enumerable.each do |item|
counter +=1
puts "Iterating #{counter}/#{iterations}..."
yield
end
end
その後、私は、私は次のようになり、ブロックの周りにこの定型ベンチマークコードをラップするために、この方法を使用できるようにしたいと思いますが
# assuming foo is an enumerable collection of objects
iterator foo do
item.slow_method
item.mundane_method
item.save
end
...と、このコードが実行されたときに、私は次のログ出力を得るでしょう:私はのようなものを呼び出すことができるように、繰り返し処理
Iterating 1/1234...
Iterating 2/1234...
Iterating 3/1234...
このようなことが可能でなければならないと思われますが、私は構文を理解することができず、そのようなことを(それを調べるために)呼び出すこともできませんでした。
問題は、私が反復するために起こっている列挙オブジェクトOUTSIDE、また、反復ブロック内の両方の決まり文句をラップする必要があります。私は列挙可能なオブジェクトをうまく渡すことができますが、渡されたブロック内から反復オブジェクトのメソッドを呼び出すことはできません。
この説明が意味をなさないことを願っています。それ。あなたが何かを明確にする必要がある場合はコメントを残してください。私はより良く説明しようとします。
あなたが行う.each 'enumerable.zip(1..size)を使用することをお勧めします|アイテム、カウンタ''より洗練された "探しているコードのための' '。 –