タイトルのまま。
Numeric#nonzero?
はクエスチョンマークで終わる問い合わせメソッドなのに nil
または self
を返すので、
if num.nonzero?
といったコードなら問題ないが、変数に代入したり、 Array
の中に突っ込んだりしたら、思わぬことになりそうなので、
enamble = !!num.nonzero?
みたいに強制的に真偽値にする !!
とセットで使うと良さそう。
と思ったけど、
enamble = !num.zero?
で十分だった。
Numeric#nonzero?
は次のような使い方をする場合にあるのではないかと予想。 ActiveSupport
の presence
と似た雰囲気。
one = 1
if (n = one.nonzero?) # n => 1
zero = 0
if (n = zero.nonzero?) # n => nil