수색…


파이프 운영자

Pipe Operator |> 는 왼쪽에있는 표현식의 결과를 취하여 첫 번째 매개 변수로 오른쪽에있는 함수에 공급합니다.

expression |> function

수식을 함께 연결하고 일련의 함수 흐름을 시각적으로 문서화하려면 파이프 연산자를 사용하십시오.

다음을 고려하세요:

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

이 예에서 Oven.bakeIngredients.mix 보다 먼저 Oven.bake 마지막으로 실행됩니다. 또한, 그것은 명백하지 않을 수도 있습니다 :temperatureOven.bake 의 매개 변수입니다 Oven.bake

파이프 연산자를 사용하여이 예제 다시 쓰기 :

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

동일한 결과를 제공하지만 실행 순서가 명확합니다. 또한, 그것은 분명하다 :temperatureOven.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은 nilfalse 를 제외한 모든 것을 비교에서 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


Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow