サーチ…


パイプオペレータ

Pipe Operator |>は左辺の式の結果を受け取り、最初のパラメータとして右辺の関数に送ります。

expression |> function

式を連鎖させ、一連の関数のフローを視覚的に文書化するには、パイプ演算子を使用します。

次の点を考慮してください。

Oven.bake(Ingredients.Mix([:flour, :cocoa, :sugar, :milk, :eggs, :butter]), :temperature)

この例では、 Oven.bakeIngredients.mix前にありますが、最後に実行されます。また、それは明らかではないかもしれません:temperatureOven.bakeパラメータです

パイプ演算子を使用してこの例を書き直す:

[:flour, :cocoa, :sugar, :milk, :eggs, :butter]
|> Ingredients.mix
|> Oven.bake(:temperature)

同じ結果が得られますが、実行順序が明確になります。さらに、 :temperatureOven.bakeコールのパラメータであることは明らかです。

パイプ演算子を使用する場合、各関数の最初のパラメータはパイプ演算子の前に再配置されるため、呼び出される関数のパラメータは1つ少なくなります。例えば:

Enum.each([1, 2, 3], &(&1+1)) # produces [2, 3, 4]

次のものと同じです:

[1, 2, 3]
|> Enum.each(&(&1+1))

パイプ演算子とかっこ

あいまいさを避けるためにはかっこが必要です。

foo 1 |> bar 2 |> baz 3

次のように記述する必要があります。

foo(1) |> bar(2) |> baz(3)

ブール演算子

エリクシールには2種類のブール演算子があります:

  • ブール演算子(最初の引数としてtrueまたはfalseいずれかが必要true
x or y      # true if x is true, otherwise y

x and y     # false if x is false, otherwise y

not x       # false if x is true, otherwise true

すべてのブール演算子は、最初の引数が厳密にブール値ではなく、 trueまたはfalsenilはブール値ではない)のみを意味する場合、 ArgumentErrorさせます。

iex(1)> false and 1 # return false
iex(2)> false or 1 # return 1 
iex(3)> nil and 1 # raise (ArgumentError) argument error: nil
  • リラックスブール演算子(任意の型で動作し、 falseでもなくてもnilでないものはすべてtrueとみなされtrue
x || y     # x if x is true, otherwise y

x && y     # y if x is true, otherwise false

!x         # false if x is true, otherwise true

オペレーター||真実であれば最初の引数を常に返します(Elixirはnilfalseを除くすべてを比較で真とみなします)。そうでなければ2番目の引数を返します。

iex(1)> 1 || 3 # return 1, because 1 is truthy
iex(2)> false || 3 # return 3
iex(3)> 3 || false # return 3
iex(4)> false || nil # return nil
iex(5)> nil || false # return false

演算子&&は真実なら常に第2引数を返します。それ以外の場合は、それぞれ引数falseまたはnil戻ります。

iex(1)> 1 && 3 # return 3, first argument is truthy
iex(2)> false && 3 # return false
iex(3)> 3 && false # return false 
iex(4)> 3 && nil # return nil
iex(5)> false && nil # return false
iex(6)> nil && false # return nil

&&||両方短絡オペレータです。左側が結果を決定するのに十分でない場合にのみ、右側を実行します。

オペレーター!現在の用語の否定のブール値を返します:

iex(1)> !2 # return false
iex(2)> !false # return true
iex(3)> !"Test" # return false
iex(4)> !nil # return true

選択された項のブール値を得る簡単な方法は、単にこの演算子を2倍にすることです。

iex(1)> !!true # return true
iex(2)> !!"Test" # return true
iex(3)> !!nil # return false
iex(4)> !!false # return false

比較演算子

平等:

  • 値の等しいx == y1 == 1.0 # true
  • 値の不等式x == y1 != 1.0 # false
  • 厳密な等式x === y1 === 1.0 # false
  • 厳密な不等式x === y1 !== 1.0 # true

比較:

  • x > y
  • x >= y
  • x < y
  • x <= y

型の互換性がある場合、比較では自然順序付けが使用されます。それ以外の場合は、一般的な型の比較ルールがあります。

number < atom < reference < function < port < pid < tuple < map < list < binary

結合演算子

バイナリ(文字列を含む)とリストを結合(連結)することができます:

iex(1)> [1, 2, 3] ++ [4, 5]
[1, 2, 3, 4, 5]

iex(2)> [1, 2, 3, 4, 5] -- [1, 3]
[2, 4, 5]

iex(3)> "qwe" <> "rty"
"qwerty"

'In'演算子

in演算子を使用すると、リストまたは範囲にアイテムが含まれているかどうかを確認できます。

iex(4)> 1 in [1, 2, 3, 4]
true

iex(5)> 0 in (1..5)
false


Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow