LoginSignup
6
2

More than 5 years have passed since last update.

Ruby の nonzero? は !! と一緒に使うと良さそうと思ったけど、zero? 使えば十分だった

Last updated at Posted at 2014-02-10

タイトルのまま。

Numeric#nonzero? はクエスチョンマークで終わる問い合わせメソッドなのに nil または self を返すので、

if num.nonzero?

といったコードなら問題ないが、変数に代入したり、 Array の中に突っ込んだりしたら、思わぬことになりそうなので、

enamble = !!num.nonzero?

みたいに強制的に真偽値にする !! とセットで使うと良さそう。

と思ったけど、

enamble = !num.zero?

で十分だった。

Numeric#nonzero? は次のような使い方をする場合にあるのではないかと予想。 ActiveSupportpresence と似た雰囲気。

one = 1
if (n = one.nonzero?) # n => 1

zero = 0
if (n = zero.nonzero?) # n => nil
6
2
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
2