The !
operator returns a Bool
that results from negating the truthyness of a value.
When used in an if
in conjunction with a variable, is_a?
, responds_to?
or nil?
the compiler will restrict the types accordingly:
a = some_condition ? nil : 3 if !a # here a is Nil because a is falsey in this branch else # here a is Int32, because a is truthy in this branch end
b = some_condition ? 1 : "x" if !b.is_a?(Int32) # here b is String because it's not an Int32 end
To the extent possible under law, the persons who contributed to this workhave waived
all copyright and related or neighboring rights to this workby associating CC0 with it.
https://crystal-lang.org/docs/syntax_and_semantics/not.html