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