前回の続きです。
@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
これでとりあえず動いているからいいや^^;
これで前半戦は終了。後半戦はここ。