산술·논리 연산자

산술·논리 연산자 (Arithmetic and Logical Operators)

*연산자(operator)*는 하나 이상의 다른 표현식을 변환하거나 결합하는 표현식의 한 유형이에요. 연산자는 두 값을 어떤 방식으로든 결합해 세 번째 결과 값을 만들거나, 주어진 단일 값을 변환해 단일 결과를 만들어요.

출처: 문서

본문

두 값에 적용되는 연산자는 수학 표기처럼 두 값 사이에 연산 기호를 둬요. 예: 1 + 2. 단일 값에 적용되는 연산자는 기호를 값 앞에 둬요. 예: !true.

테라폼 언어에는 산술과 논리 모두를 위한 연산자 집합이 있으며, JavaScript나 Ruby 같은 프로그래밍 언어의 연산자와 비슷해요.

하나의 표현식에서 여러 연산자가 함께 사용될 때는 다음 연산 순서(연산자 우선순위)로 평가돼요.

  1. !, - (-1 곱하기)
  2. *, /, %
  3. +, - (뺄셈)
  4. >, >=, <, <=
  5. ==, !=
  6. &&
  7. ||

기본 연산 순서를 바꾸려면 괄호를 사용해요. 괄호가 없으면 높은 우선순위부터 평가되므로, 테라폼은 1 + 2 * 31 + (2 * 3)으로 해석하지 (1 + 2) * 3으로 해석하지 않아요.

여러 연산자는 유사한 동작을 가진 몇 개의 그룹으로 묶을 수 있어요. 아래에서 설명할게요. 각 연산자 그룹은 주어진 값이 특정 타입이기를 기대해요. 테라폼은 값을 요구되는 타입으로 자동 변환을 시도하며, 자동 변환이 불가능하면 오류 메시지를 만들어요.

? 문자와 : 문자의 조합은 테라폼에서 조건식(conditional expression)의 일부이며 연산자로 간주되지 않아요. 자세한 내용은 조건식을 참고하세요.

산술 연산자 (Arithmetic Operators)

산술 연산자는 모두 숫자 값을 기대하고 결과로 숫자 값을 만들어요.

  • a + bab를 더한 결과를 반환해요.
  • a - ba에서 b를 뺀 결과를 반환해요.
  • a * bab를 곱한 결과를 반환해요.
  • a / bab로 나눈 결과를 반환해요.
  • a % bab로 나눈 나머지를 반환해요. 이 연산자는 보통 정수와 함께 사용할 때만 유용해요.
  • -aa에 -1을 곱한 결과를 반환해요.

테라폼은 함수로 몇 가지 덜 흔한 숫자 연산도 지원해요. 예를 들어 the pow 함수로 지수(exponent)를 계산할 수 있어요.

동등 연산자 (Equality Operators)

동등 연산자는 모두 임의 타입의 두 값을 받고 결과로 boolean 값을 만들어요.

  • a == bab가 둘 다 같은 타입이고 같은 값이면 true, 그렇지 않으면 false를 반환해요.
  • a != ba == b의 반대예요.

동등 연산자는 동등성을 판단하기 위해 두 인자가 정확히 같은 타입이어야 하므로, 이 연산자는 기본(primitive) 타입 값에만 사용하거나, 비교에 의도하는 타입을 나타내기 위해 명시적 타입 변환 함수를 함께 사용하는 것을 권장해요.

구조적 타입 간의 비교는 각 인자의 타입을 확신하지 못하면 놀라운 결과를 만들어낼 수 있어요. 예를 들어 var.list == []var.list가 빈 리스트라면 true를 반환할 것 같지만, []는 실제로 tuple() 타입의 값을 만들기 때문에 두 값은 결코 일치할 수 없어요. 이런 상황에서는 대신 length(var.list) == 0이라고 쓰는 것이 더 명확한 경우가 많아요.

비교 연산자 (Comparison Operators)

비교 연산자는 모두 숫자 값을 기대하고 결과로 boolean 값을 만들어요.

  • a < bab보다 작으면 true, 그렇지 않으면 false를 반환해요.
  • a <= bab보다 작거나 같으면 true, 그렇지 않으면 false를 반환해요.
  • a > bab보다 크면 true, 그렇지 않으면 false를 반환해요.
  • a >= bab보다 크거나 같으면 true, 그렇지 않으면 false를 반환해요.

논리 연산자 (Logical Operators)

논리 연산자는 모두 bool 값을 기대하고 결과로 bool 값을 만들어요.

  • a || bab 중 하나라도 true이면 true, 둘 다 false이면 false를 반환해요.
  • a && bab가 둘 다 true이면 true, 하나라도 false이면 false를 반환해요.
  • !aafalse이면 true, atrue이면 false를 반환해요.

테라폼에는 "배타적 OR(exclusive OR)" 연산을 위한 연산자가 없어요. 두 연산이 모두 boolean 값임을 안다면 배타적 OR은 !=("같지 않음") 연산자와 동일해요.

더 알아보기 (Learn more)