Ruby ビギナーのための CGI 入門

どうもAS3は自分にあってないようなので、唐突にRuby、というかWebアプリケーションの勉強を始めます。
ど素人なのでまずはRubyist MagazineのRuby ビギナーのための CGI 入門を5回までやった。
http://jp.rubyist.net/magazine/?0011-CGIProgrammingForRubyBeginners

チュートリアルの感想。

  • CGIrubyもほぼ素人レベルを想定してるのか、解説が丁寧でわかりやすい。
  • RDEは便利。ちょっとしたスクリプトをファイルを保存しないで試せるのがよい。
  • server.rbっていうWEBrickを使ったWebサーバが入ってて、ローカルですぐCGIが試せるようになってるのがうれしい。
  • わかりやすさを重視してるのか、わりとRubyっぽくない書き方が多い気がする。

例えば、http:/jp.rubyist.net/magazine/?0015-CGIProgrammingForRubyBeginners-2#l5の
ファイルの中身を逆順に表示する部分ですが、

f = File.open("bbs.dat","r")
arr = []
l = f.gets

while l 
  arr << l
  l = f.gets
end

f.close

i = arr.length - 1

while i >= 0 
  print arr[i]
  i = i - 1
end

自分のRuby知識で書き直すとこんな感じ?もっとカッコよく書けそうだなー。

arr = []
File.open("bbs.dat","r") do |f|
  f.each_line { |l|
    arr << l
  end
end

arr.reverse.each do |l| 
  print l
end

ブロックとメソッドチェーンが楽しい。

後、メソッドの直後の{をブロックと勘違いされるところがちょっと気持ち悪かった。

puts 1.class
puts "Hello, world!".class
puts [1, 2, 3].class
puts {"k1" => "v1", "k2" => "v2" }.class # この行だけエラー。syntax error, unexpected tASSOC, expecting '}'
puts({"k1" => "v1", "k2" => "v2" }.class) # ()つければ大丈夫。