06 October 2013
Rubyのバグだと思ったら自分がバグだった ─ Enumerator編 ─
─ 問題 ─
以下のコードのバグを指摘せよ。
def step(init, step=1)
Enumerator.new do |y|
loop { y << init; init += step }
end
end
odd = step(1, 2)
odd.next # => 1
odd.next # => 3
odd.next # => 5
これはNumeric#step
を使った以下のコードと同じ挙動が期待されている。
odd = 1.step(Float::MAX.to_i, 2)
odd.next # => 1
odd.next # => 3
odd.next # => 5
─ 解説 ─
ブコメ参照せよ。
以上。
ちょっとハマったので、問題にしてみましたよ!
blog comments powered by Disqus