読者です 読者をやめる 読者になる 読者になる

【Ruby】Rubyの nil? と ||= について

技術的なところもレベルアップするために、備忘録のため書きます。

nil?

最近、Rubyでデータを扱うスクリプトを書いているときのこと。
もともとJavaエンジニアなのでnull判定は以下の通り書いていました。

hoge != null

この慣習が残っているため、Rubyでも同じように書いていました。

hoge = "test"
hoge != nil

普通にソースレビューでボロクソに言われるパターンですね。
以下のように書きましょう。

hoge = "test"
hoge.nil?

pryでちゃんと試します。

[1] pry(main)> hoge = "test"
=> "test"
[2] pry(main)> hoge.nil?
=> false
[3] pry(main)> hoge == nil
=> false

||=

演算子の自己代入演算子。a が 偽 か 未定義 なら a に xxx を代入する。
こ、こんな便利なものが・・・?!
と書いていますが、Javaでも += とか普通にありますもんね。

pryでちゃんと試します。

[1] pry(main)> piyo = ""
=> ""
[2] pry(main)> piyo ||= "piyo"
=> ""
[3] pry(main)> piyo2 = "piyo2"
=> "piyo2"
[4] pry(main)> piyo2 ||= "piyopiyo"
=> "piyo2"

irbやpryですぐに試せるのも強みですね。
やる気UPに繋がります。

ちなみにQiitaに書かないのは、いいものがもっとたくさんあるためです。