* たのしいRuby 第5章 条件判断

nilとfalseの違いについて。

イマイチ違いがわからなかったので、調べた

持っているメソッドの違いは,nil.methods - false.methodsと false.methods - nil.methodsを表示してください.
ハッシュでは,nilを値として持つことができませんが, falseを持つことはできます.

!!

驚いた。nilもfalseもオブジェクトかよ!!

nilJavaScriptで言うところのundefined(未定義値)みたいなものだと思う。

case

サンプルはメールヘッダ解析だったけど、メールヘッダを用意するのが面倒だったので、HTTPヘッダ解析にしてみた。

自宅サーバーに繋ぎます。

header.rb
#!/usr/bin/ruby

require 'net/http'

response = Net::HTTP.get_response('localhost', '/')
response.each { |key, value|
  case key
  when "last-modified"
    puts "最終更新日時 : " + value
  when "date"
    puts "生成日時     : " + value
  when "server"
    puts "サーバー     : " + value
  when "content-length"
    puts "長さ         : " + value
  when "connection"
    puts "コネクション : " + value
  when "content-type"
    puts "種類         : " + value
  when "etag"
    puts "よくわからん : " + value
  when "accept-ranges"
    puts "なんだコレ   : " + value
  else
  printf "その他       : %s : %s\n", key, value
  end
}
print response.body

RFCは後で調べるとして・・・。実行〜

% ./header.rb
コネクション : close
種類         : text/html; charset=UTF-8
生成日時     : Sat, 28 Apr 2007 04:19:35 GMT
サーバー     : Apache/2.2.3 (Fedora)
長さ         : 3956
なんだコレ   : bytes
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
        <head>
                <title>Test Page for the Apache HTTP Server on Fedora Core</title>
                <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
...(略

今回はcase文がメインなので、他は適当っす。case文はcase~when~else~endと書く。自宅サーバーも作らないとなぁ・・・。

連続で書きたいときはwhen "foo" "bar"と書くっと。

参考
プログラミングRuby第2版 ライブラリ蝙

おし!5章終了〜。