第4回 YokohamaRuby その2

前回の続きです。

@dan5yaさんからの次のテーマは、myeachを書いてみようというもの。さっき書いたコード

a = %w(a abc abcdef)

max = a.map{ |i| i.size }.max

a.each do |i|
   p i.rjust(max)
end

のeachの部分をmyeachにした次のコード

a = %w(a abc abcdef)

max = a.map{ |i| i.size }.max

a.myeach do |i|
   p i.rjust(max)
end

がうまく動くようにArray#myeachを実装するっていうのがテーマ。

yieldを使うんだけど、あんまり良くわかってねぇ。とりあえずイディオム的に覚えていた次のコードを書いた。

class Array
   def myeach
      i = 0
      while i < self.size
         yield self[i]
         i += 1
      end
   end
end

これでとりあえず動いているからいいや^^;

これで前半戦は終了。後半戦はここ