enum
http://mono.kmc.gr.jp/~yhara/d/?date=20070612#p04
あ〜わかる。
module Enumerable def each2 a = self.to_a a.each_index do |i| yield ((i-1<0)?(nil):(a[i-1]), a[i], a[i+1]) end end end (1..10).each2{|prev,i,succ| print "#{prev}, #{i}, #{succ}\n"}
とかでいいのかな?
zip使うのがカッコいいのかぁ…
あと、
module Enumerable def each2 a = self.to_a a.each_index do |i| i2 = (i-1 < 0)?(0):(i-1) yield (a[0..i2].reverse, a[i], a[i+1..last]) end end end (1..10).each2{|prev,i,succ| print "#{prev}, #{i}, #{succ}\n"} (1..10).each2{|prev,i,succ| print "#{prev[0]}, #{i}, #{succ[0]}\n"} # 隣 (1..10).each2{|prev,i,succ| print "#{prev[1]}, #{i}, #{succ[1]}\n"} # 隣の隣
とかすれば両隣が必要なとき以外に、両隣のさらに隣が必要なときなどにも対応できるんじゃないかと
俺名前の付け方下手だなぁ…