タイトルのまま。
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