zero?
レシーバーがゼロの時にtrueを、そうでない時にfalseを返すメソッド。
使う場面の例:if文 (よりスマートに書ける)
① obj = 0
p obj.to_i.zero?
=> true
obj = 1
p obj.to_i.zero?
=> false
② obj = ''
p obj.to_i.zero?
=> true
③ obj = nil
p obj.to_i.zero?
=> true
④ obj = 'test'
p obj.to_i.zero?
=> true
p obj.zero?
=> NoMethodError: undefined method `zero?' for "test":String
⑤ obj = ' '
p obj.to_i.zero?
=> true
p obj.zero?
=> NoMethodError: undefined method `zero?' for " ":String
①0の時はtrue、1のような時はfalse
②”をto_iで数値にすると0なので、true
③nilも数値にすると0なのでtrue
④文字列はto_iを通すと0でtrue、そのままzero?するとエラーに
⑤‘ ‘(半角スペース)も④と同様
nonzero?
zero?とは逆に、nonzero?はレシーバーがゼロの時にnilを、ゼロでない時にはレシーバーをそのまま返す。
obj = 1
p obj.nonzero?
=> 1
obj = 0
p obj.nonzero?
=> nil