Elixir Language
연산자
수색…
파이프 운영자
Pipe Operator |>
는 왼쪽에있는 표현식의 결과를 취하여 첫 번째 매개 변수로 오른쪽에있는 함수에 공급합니다.
expression |> function
수식을 함께 연결하고 일련의 함수 흐름을 시각적으로 문서화하려면 파이프 연산자를 사용하십시오.
다음을 고려하세요:
Oven.bake(Ingredients.Mix([:flour, :cocoa, :sugar, :milk, :eggs, :butter]), :temperature)
이 예에서 Oven.bake
는 Ingredients.mix
보다 먼저 Oven.bake
마지막으로 실행됩니다. 또한, 그것은 명백하지 않을 수도 있습니다 :temperature
는 Oven.bake
의 매개 변수입니다 Oven.bake
파이프 연산자를 사용하여이 예제 다시 쓰기 :
[:flour, :cocoa, :sugar, :milk, :eggs, :butter]
|> Ingredients.mix
|> Oven.bake(:temperature)
동일한 결과를 제공하지만 실행 순서가 명확합니다. 또한, 그것은 분명하다 :temperature
는 Oven.bake
호출의 매개 변수이다.
파이프 연산자를 사용할 때 각 함수의 첫 번째 매개 변수는 파이프 연산자 이전에 재배치되므로 호출되는 함수의 매개 변수가 하나 더 적은 것처럼 보입니다. 예를 들면 :
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)
부울 연산자
Elixir에는 두 종류의 부울 연산자가 있습니다.
- 부울 연산자 (첫 번째 인수로
true
또는false
를 기대합니다)
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
모든 부울 연산자는 첫 번째 인수가 부울 값이 아닌 엄격히 부울 값을 가지면 ArgumentError
발생시킵니다. 이는 true
또는 false
을 의미합니다 ( nil
은 부울이 아님).
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
로 간주됩니다)
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은 nil
과 false
를 제외한 모든 것을 비교에서 true로 처리합니다). 그렇지 않으면 두 번째 인수가 반환됩니다.
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
연산자 &&
는 사실이라면 항상 두 번째 인수를 반환합니다. 그렇지 않으면 각각 인수, 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
선택한 용어의 부울 값을 얻는 간단한 방법은 단순히이 연산자를 두 배로 만드는 것입니다.
iex(1)> !!true # return true
iex(2)> !!"Test" # return true
iex(3)> !!nil # return false
iex(4)> !!false # return false
비교 연산자
평등:
- 값의 동일성
x == y
(1 == 1.0 # true
) - 값 부등식
x == y
(1 != 1.0 # false
) - 완전 항등
x === y
(1 === 1.0 # false
) - 엄격한 부등식
x === y
(1 !== 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
연산자를 사용하면 목록이나 범위에 항목이 있는지 여부를 확인할 수 있습니다.
iex(4)> 1 in [1, 2, 3, 4]
true
iex(5)> 0 in (1..5)
false