Step by Step Ruby on Rails

Ruby on Railsで実際にWebサイトを構築する手順をまとめています。

Rubyで存在確認、nil、empty

Rubyで存在確認を行う方法をinteractive Ruby (irb)を使って確認しました。

●interactive Ruby (irb)の起動方法

$ rails console

1)emptyメソッド

文字列に対し、emptyメソッドを実行する例です。
 
irb(main):002:0> "foobar".empty?
=> false

irb(main):003:0> "".empty?
=> true

例1)単純なif文

irb(main):004:0> s = "foobar"
=> "foobar"
irb(main):005:0> if s.empty?
irb(main):006:1>    "The string is empty"
irb(main):007:1> else
irb(main):008:1*   "The string is nonempty"
irb(main):009:1> end

=> "The string is nonempty"

例2)ifとAND、ORの組み合わせ

irb(main):010:0> x = "foo"
irb(main):011:0> y = ""
irb(main):012:0> puts "Both strings are empty" if x.empty? && y.empty?
=> nil
irb(main):013:0> puts "One of the strings is empty" if x.empty? || y.empty?
One of the strings is empty
=> nil
irb(main):014:0> puts "x is not empty" if !x.empty?
x is not empty
=> nil

例3)unlessを使って条件制御

irb(main):021:0> string = "foobar"
irb(main):022:0> puts "The string '#{string}' is nonempty." unless string.empty?
The string 'foobar' is nonempty.
=> nil

2)nilに関する注意点

①nilもオブジェクトで"to_s"メソッドで文字列を返す。

irb(main):015:0> nil.to_s
=> ""

②nilオブジェクトは、直接emptyメソッドを使う事が出来ず、"to_s"メソッドをはさんで使う。

irb(main):016:0> nil.empty?
NoMethodError: undefined method `empty?' for nil:NilClass
        from (irb):16

irb(main):017:0> nil.to_s.empty?
=> true

③Rubyではnilはfalse、nil以外で0の場合もtrue

irb(main):023:0> if nil
irb(main):024:1>   true
irb(main):025:1> else
irb(main):026:1*   false
irb(main):027:1> end
=> false

irb(main):033:0> if 0
irb(main):034:1>   true
irb(main):035:1> else
irb(main):036:1*   false
irb(main):037:1> end
=> true

④nilメソッドで存在確認

irb(main):018:0> "foo".nil?
=> false

irb(main):019:0> "".nil?
=> false

irb(main):020:0> nil.nil?
=> true