연산자는 Verse 프로그래밍 언어에 정의되어 있는 특수한 함수로, 피연산자에 수학 연산 등의 액션을 수행합니다. 예를 들어 1 + 2 표현식에서는 +가 연산자이고 1과 2가 피연산자입니다.
Verse의 연산자에는 다음 3가지 포맷이 있습니다.
전위: 피연산자가 단 1개이며 연산자가 피연산자 앞에 옵니다.
중위: 피연산자가 2개이며 연산자가 피연산자 사이에 옵니다.
후위: 피연산자가 단 1개이며 연산자가 피연산자 뒤에 옵니다.
이 페이지에는 Verse에서 사용할 수 있는 모든 연산자의 목록, 연산자의 작동 방식, 다른 연산자와 함께 사용했을 때의 평가 순서가 설명되어 있습니다.
모든 연산자의 목록과 연산자 우선순위
여러 연산자가 동일한 표현식에 사용된 경우 높은 우선순위부터 낮은 우선순위의 순서대로 평가됩니다. 아래 표에는 Verse의 모든 기본 연산자와 그 우선순위가 열거되어 있습니다.
| 이름 | 연산자 | 설명 | 연산자 포맷 | 연산자 우선순위 | 예시 |
|---|---|---|---|---|---|
쿼리 |
|
| 후위 | 9 |
|
부정 |
|
| 전위 | 8 |
|
양수 |
|
| 전위 | 8 |
|
음수 |
|
| 전위 | 8 |
|
곱셈 |
|
| 중위 | 7 |
|
나눗셈 |
|
| 중위 | 7 |
|
덧셈 |
|
| 중위 | 6 |
|
뺄셈 |
|
| 중위 | 6 |
|
덧셈 할당 |
| 이 연산자로는 동일한 연산에 덧셈과 할당을 결합하여 변수 값을 업데이트할 수 있습니다. 자세한 내용은 수학을 참고하세요. | 중위 | 5 |
|
뺄셈 할당 |
| 이 연산자로는 동일한 연산에 뺄셈과 할당을 결합하여 변수 값을 업데이트할 수 있습니다. 자세한 내용은 수학을 참고하세요. | 중위 | 5 |
|
곱셈 할당 |
| 이 연산자로는 동일한 연산에 곱셈과 할당을 결합하여 변수 값을 업데이트할 수 있습니다. 자세한 내용은 수학을 참고하세요. | 중위 | 5 |
|
나눗셈 할당 |
| 이 연산자로는 동일한 연산에 나눗셈과 할당을 결합하여 변수가 integer가 아닌 경우 변수 값을 업데이트할 수 있습니다. 자세한 내용은 수학을 참고하세요. | 중위 | 5 |
|
같음 |
|
| 중위 | 4 |
|
같지 않음 |
|
| 중위 | 4 |
|
미만 |
|
| 중위 | 4 |
|
이하 |
|
| 중위 | 4 |
|
초과 |
|
| 중위 | 4 |
|
이상 |
|
| 중위 | 4 |
|
그리고 |
|
| 중위 | 3 |
|
또는 |
|
| 중위 | 2 |
|
변수 및 상수 초기화 |
| 이 연산자로 상수 또는 변수에 값을 저장할 수 있습니다. 자세한 내용은 변수와 상수를 참고하세요. | 중위 | 1 |
|
변수 할당 |
| 이 연산자로 변수에 저장된 값을 업데이트할 수 있습니다. 자세한 내용은 변수와 상수를 참고하세요. | 중위 | 1 |
|
동일한 표현식에 동일한 우선순위의 연산자가 여러 개 있는 경우 왼쪽에서 오른쪽 순서로 평가됩니다. 예를 들어 표현식 3*2/4에서 연산자 *와 /는 우선순위가 동일하므로 3*2가 먼저 평가되고 평가된 결과가 / 연산자의 왼쪽 피연산자가 됩니다.
()로 표현식을 그룹화하여 연산자의 평가 순서를 변경할 수 있습니다. 예를 들어 (1+2)*3과 1+(2*3)은 평가 결과가 같지 않습니다. 자세한 내용은 그룹화를 참고하세요.
비교
부등호 연산자와 등가 비교 연산자를 사용하는 비교 표현식을 통해 성공 및 실패 플로를 제어할 수 있습니다. 비교 표현식은 실패 가능하므로, 비교 연산자는 if 표현식과 같은 실패 컨텍스트에서만 사용할 수 있습니다.
아래 표에 각 연산자와 해당 연산자가 지원하는 타입이 설명되어 있습니다. 모든 비교 연산자는 중위 포맷을 사용합니다.
| 연산자 | 지원하는 내장 타입 | 설명 |
|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
array, map, tuple, class 인스턴스에도 <>와 =가 지원되지만, 제한 사항이 있습니다. array, map, tuple 인스턴스는 지원되는 타입만 포함해야 하며, class 인스턴스는 적어도 하나의 var 멤버를 포함하는 경우에만 지원됩니다.
결정
not, and, or 연산자를 사용하는 결정 표현식을 통해 성공과 실패 플로를 제어할 수 있습니다. 결정 표현식은 실패 가능하므로 if 표현식과 같은 실패 컨텍스트에서만 결정 연산자를 사용할 수 있습니다. 성공할 수도 있고 실패할 수도 있는 모든 표현식에 결정 연산자를 사용할 수 있습니다.
not 연산자
결정 연산자 not은 표현식의 성공 또는 실패를 반전합니다. not 연산자는 전위 포맷을 사용합니다.
예를 들어 expression이 실패하면 not expression은 성공합니다. expression이 성공하면 not expression이 실패하며, 마치 expression이 실행되지 않았을 때처럼 표현식의 이펙트가 커밋되지 않습니다.
예를 들어 다음 코드가 실행된 후에도 Example은 초깃값인 0을 유지합니다.
var Example : int = 0
if (not (set Example = ExampleArray[0])) { … }not not expression을 사용해 표현식을 실행하지 않으면서 표현식이 성공하는지 확인할 수도 있습니다.
| p 표현식의 결과 | not p 표현식의 결과 | not not p 표현식의 결과 |
|---|---|---|
성공하며 결과는 | 표현식이 실패하며 | 표현식이 성공하지만 |
실패하며 결과 값은 없습니다. | 표현식이 성공합니다. 표현식의 결과는 | 표현식이 실패합니다. 표현식의 결과 값은 없습니다. |
p로 표현되는 표현식을 평가하는 not 연산자의 레퍼런스
and/or 연산자
결정 연산자 and는 중위 포맷을 사용하며 두 피연산자가 모두 성공할 경우 성공하고 피연산자 중 하나라도 실패할 경우 실패하는 실패 가능 표현식입니다.
결정 연산자 or는 중위 포맷을 사용하며 다음 특성을 갖습니다.
첫 번째 피연산자의 실패 컨텍스트입니다.
두 번째 피연산자가 실패 가능한 경우에만 실패 가능 표현식입니다.
or 연산자는 첫 번째 피연산자가 성공할 경우 두 번째 피연산자를 평가하지 않습니다.
아래 표에는 모든 성공과 실패 피연산자 조합에서 and와 or 연산자를 사용하는 결정 표현식의 결과가 설명되어 있습니다.
| p 표현식의 결과 | q 표현식의 결과 | p and q 표현식의 결과 | p or q 표현식의 결과 |
|---|---|---|---|
성공하며 결과는 | 성공하며 결과는 | 표현식이 성공하며 | 표현식이 성공하며 |
성공하며 결과는 | 실패하며 결과 값은 없습니다. | 표현식이 실패하며 | 표현식이 성공하며 |
실패하며 결과 값은 없습니다. | 성공하며 결과는 | 표현식이 실패하며 | 표현식이 성공하며 |
실패하며 결과 값은 없습니다. | 실패하며 결과 값은 없습니다. | 표현식이 실패하며 | 표현식이 실패하며 |
p와 q로 표현되는 표현식을 평가하는 and와 or 연산자의 레퍼런스
수학
수학 표현식으로 숫자 값의 사칙연산(덧셈, 뺄셈, 곱셈, 나눗셈)을 하거나 string을 연결할 수 있습니다. 모든 연산자는 중위 포맷을 사용합니다. +와 -는 숫자 값의 전위에 사용할 수도 있습니다.
또한 set X += 10과 같은 대입 연산자도 있습니다. set X = X + 10과 같이 연산을 수행하여 그 결과를 할당하는 것과 거의 동일하나, X가 한 번만 평가된다는 차이점이 있습니다. 대입 연산자의 결과는 변수에 업데이트한 값입니다.
아래 표에 각 연산자와 해당 연산자가 지원하는 타입이 설명되어 있습니다.
| 연산자 | 지원하는 내장 타입 | 설명 |
|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 이 연산자로는 동일한 연산에 덧셈과 할당을 결합하여 변수 값을 업데이트할 수 있습니다. |
|
| 이 연산자로는 동일한 연산에 뺄셈과 할당을 결합하여 변수 값을 업데이트할 수 있습니다. |
|
| 이 연산자로는 동일한 연산에 곱셈과 할당을 결합하여 변수 값을 업데이트할 수 있습니다. |
|
| 이 연산자로는 동일한 연산에 나눗셈과 할당을 결합하여 변수가 integer가 아닌 경우 변수 값을 업데이트할 수 있습니다. integer 나눗셈에 대한 자세한 내용은 int를 참고하세요. |
쿼리
쿼리 표현식은 ?(쿼리) 연산자를 사용하여 logic 값이 true인지 확인합니다. 그렇지 않으면 표현식이 실패합니다. ?(쿼리) 연산자는 후위 포맷을 사용합니다.
| p 표현식의 결과 | p? 표현식의 결과 |
|---|---|
| 성공하며 결과는 |
| 실패하며 결과 값은 없습니다. |
p로 표현되는 표현식을 평가하는 ?(쿼리) 연산자의 레퍼런스
예시:
if (IsMorning?):
Say("Good Morning!")