3 기본 연산자 - Basic operators

앞 장에서 Elixir 산술 연산자로 +, -, *, / 를 사용할 것을 보았습니다. 정수의 몫과 나머지를 찾는데 div/2rem/2가 있다는 것도 알게 되었습니다.

In the previous chapter, we saw Elixir provides +, -, *, / as arithmetic operators, plus the functions div/2 and rem/2 for integer division and remainder.

Elixir는 리스트를 조작 하기 위해 ++-- 연산자를 제공 합니다:

Elixir also provides ++ and -- to manipulate lists:

iex> [1,2,3] ++ [4,5,6]
[1,2,3,4,5,6]
iex> [1,2,3] -- [2]
[1,3]

문자열의 결합은 <> 로 가능합니다:

String concatenation is done with <>:

iex> "foo" <> "bar"
"foobar"

Elixir에는 세 가지 논리 연산자 or, andnot를 제공합니다. 이러한 연산자는 첫 번째 인수가 불리언 (true 또는 false)이여야 합니다.

Elixir also provides three boolean operators: or, and and not. These operators are strict in the sense that they expect a boolean (true or false) as their first argument:

iex> true and true
true
iex> false or is_atom(:example)
true

불리언 아닌 경우는 예외를 발생시킵니다:

Providing a non-boolean will raise an exception:

iex> 1 and true
** (ArgumentError) argument error

orand 는 단락 연산자입니다. 왼쪽 조건이 만족하지 않은 경우에만 오른쪽이 실행됩니다:

or and and are short-circuit operators. They only execute the right side if the left side is not enough to determine the result:

iex> false and error("This error will never be raised")
false

iex> true or error("This error will never be raised")
true

참고 : Erlang 개발자 분들에게, Elixir의 andor 는 Erlang의 andalsoorelse 동일합니다.

Note: If you are an Erlang developer, and and or in Elixir actually map to the andalso and orelse operators in Erlang.

이러한 불리언 연산자와 달리 ||, &&!는 어떤 타입도 허용합니다. 이 경우 falsenil 이외는 true로 평가됩니다:

Besides these boolean operators, Elixir also provides ||, && and ! which accept arguments of any type. For these operators, all values except false and nil will evaluate to true:

# or
iex> 1 || true
1
iex> false || 11
11

# and
iex> nil && 13
nil
iex> true && 17
17

# !
iex> !true
false
iex> !1
false
iex> !nil
true

정리하면, 불리언 값일때는 and, ornot 을 사용하고 만약 인수의 타입이 불리언이 아니라면 &&, ||! 를 사용하십시요.

As a rule of thumb, use and, or and not when you are expecting booleans. If any of the arguments are non-boolean, use &&, || and !.

Elixir는 비교 연산자로 ==, !=, ===, !==, <=, >=, <>를 제공하고 있습니다:

Elixir also provides ==, !=, ===, !==, <=, >=, < and > as comparison operators:

iex> 1 == 1
true
iex> 1 != 2
true
iex> 1 < 2
true

=====의 차이는 후자가 정수와 부동 소수점 비교에 엄격 하다는 점입니다:

The difference between == and === is that the latter is more strict when comparing integers and floats:

iex> 1 == 1.0
true
iex> 1 === 1.0
false

Elixir는 다른 형태를 비교할 수 있습니다:

In Elixir, we can compare two different data types:

iex> 1 < :atom
true

편리를 위해 다른 타입을 비교할 수 있습니다. 이렇게 하면 정렬 알고리즘에서 다른 타입끼리의 정렬에 대해 걱정할 필요가 없습니다. 전체 정렬 순서는 다음과 같이 정의되어 있습니다:

The reason we can compare different data types is pragmatism. Sorting algorithms don't need to worry about different data types in order to sort. The overall sorting order is defined below:

number < atom < reference < functions < port < pid < tuple < maps < list < bitstring

정확하게 순서를 기억할 필요는 없지만, 이러한 순서가 있음을 알아야 합니다.

You don't actually need to memorize this ordering, but it is important just to know an order exists.

도입은 이 정도로 해두겠습니다. 다음 장에서는 기본적인 함수, 타입 변환이나 간단한 흐름 제어에 대해 살펴볼 것입니다.

Well, that is it for the introduction. In the next chapter, we are going to discuss some basic functions, data type conversions and a bit of control-flow.