やってみた。
ということで、ここで問題。以下の二つのプログラムを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