LoginSignup
8
1

Elixir &&はどんな時に使うのか

Last updated at Posted at 2023-12-22

次の記事の続編です

この記事は、boolenの場合はandを使いましょうというアンチパターンが発端でした。

元記事の@zacky1972さんのコメントにandは、ガードの中に書けるというコメントをみて、まったく異なるものなんじゃないか?という疑問がでてきました。
andはbooleanの為のもので正統派。ガードにも使える。
じゃあ、&&は何なの!

||や!も同じですが、代表して&&と表記します。

&&にしかできないこと

&&は、nilかfalseを偽、それ以外を真と扱います。andにはこれはできません。

アンチパターンにも最初に書かれています。

Elixir provides the concept of truthiness: nil and false are considered "falsy" and all other values are "truthy".

偽になるのは、nilと:false。それ以外が真です。

&&を使う時はどんな時か?

  • 値がbooleanの時はandを使うので、それ以外場合。
  • booleanでなくて、:falseになることは、あまりなさそう。

つまり、
&&は、値がnilかどうかを調べたい時に使う。
ということになります。

例えば、nilだったら、デフォルト値にするみたいな記述

iex(12)> a = nil
nil
iex(13)> b = "abc"
"abc"
iex(14)> result = a || "default"
"default"
iex(15)> result = b || "default"
"abc"
iex(16)>

値がnilでない事を確認する

iex(16)> a = nil
nil
iex(17)> b = "abc"
"abc"
iex(18)> ! a
true
iex(19)> ! b
false
iex(20)>

二つの結果がnilだった時は、nilを返す

iex(20)> a = nil
nil
iex(21)> b = nil
nil
iex(22)> a && b
nil
iex(23)>

nilを使っていいのか?

勉強中

8
1
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
8
1