コンテンツにスキップ

if !

否定 (!) 演算子は真かどうかを反転させた Bool 型の値を返します。

ifの条件式の論理積の中のis_a?responds_to?nil?に対してこれを使うと、コンパイラはそれに応じて変数の型を適切に制約します。

a = some_condition ? nil : 3
if !a
  # この節は a が偽となる場合に評価されるので、ここで a は Nil 型
else
  # この節は a が真となる場合に評価されるので、ここで a は Int32 型
end
b = some_condition ? 1 : "x"
if !b.is_a?(Int32)
  # b が Int32 ではないときに評価されるので、ここで b は String 型
end