each で隣の要素を参照 #4
id:odz さんの対策だと $index がマルチスレッドで変なことになるような気がする。自分流の修正版。
うはは。おっしゃるとおり。自分でマルチスレッドがどうとか書いている癖にすっかり忘れているよ。あほだ。
で、id:ku-ma-me さんの新しいのはネストの内側で挙動がおかしいという。
[0].each_with_prevsucc do |i| [0, 1, 2].each_with_prevsucc do |j| p [prev, j, succ] end end
[nil, 0, nil] [nil, 1, nil] [nil, 2, nil]
たぶん、こうするべきなんだろうな。
--- prevsucc.rb.orig 2007-06-14 23:45:50.484375000 +0900 +++ prevsucc.rb 2007-06-14 23:45:57.359375000 +0900 @@ -20,5 +20,5 @@ self end end -def prev; Enumerable::PREVSUCCS[Thread.current].last.first; end -def succ; Enumerable::PREVSUCCS[Thread.current].last.last; end +def prev; Enumerable::PREVSUCCS[Thread.current].first.first; end +def succ; Enumerable::PREVSUCCS[Thread.current].first.last; end