やってみた。

ということで、ここで問題。以下の二つのプログラムをfor/whileを使わずにイテレータで書き直してみていただきたい。私はどちらの例も、イテレータで書いた方がずっと美しいと思うのだが、いかがだろう。

http://satoshi.blogs.com/life/2007/10/ruby.html

題意無視だけど、これにイテレータつかうことはないと思うなぁ。

#!/usr/bin/env ruby

def hello(to, *mesg)
  puts "Hello, #{to}."
  puts '-- message --'
  puts mesg.join("\n")
end

hello('World', 'msg1', 'msg2', 'msg3')

def fact(n)
  (1..n).inject(1) {|r, i| r*i}
end

p fact(0)
p fact(1)
p fact(3)
p fact(10)
kouhei@chartreuse:~$ ./lisb_ruby.rb 
Hello, World.
-- message --
msg1
msg2
msg3
1
1
6
3628800

素直にiterator使った例はid:tetsuarossaさんが既に書いていらっしゃいます。
http://d.hatena.ne.jp/tetsuarossa/20071004/p1