LSL Operators/ko
연산자는 (이를테면 ! 처럼) 하나 혹은 두 개의 피연산자에 작용(혹은 수학연산)을 가한다. 쉬운 예로 1 + 2 에서 1과 2는 피연산자이며 +은 연산자이다.
이것은 왼쪽에 피연산자인 변수가 위치하는 특수한 할당 연산자로 확장될 수 있다.
연산자 | 설명 | 용례 |
---|---|---|
() [] . | 괄호, 대괄호, 점 | 나중에 수행 (먼저 수행) |
(유형) | 형변환 | message = "The result is:" + (string) result; |
! ~ ++ -- | NOT, 여수, 증가, 감소 | counter++; |
* / % | 곱(내적), 나누기, 절대치(외적) | rollover = (count + 1)%5; |
- | 빼기 | one = 3 - 2; |
+ | 문자열을 더하거나 합치기 | two = 1+1;
text = "Hello" + "World"; |
+ | 목록을 연결하기 | myList = [1, 2, 3] + [4, 5];
newList = oldList + addList; |
<< >> | 왼쪽 대입, 오른쪽 대입 | eight = 4 << 1; |
< <= > >= | 작다, 작거나 같다, 크다, 크거나 같다 | isFalse = (6 <= 4); |
== != | 동치, 같지 않음 | isFalse = ("this" == "that"); |
& | 비트연산 AND | zero = 4 & 2;
four = 4 & 4; |
^ | 비트연산 XOR | zero = 4 ^ 4;
six = 4 ^ 2; |
| | 비트연산 OR | four = 4 | 4;
six = 4 | 2; |
|| | 비교연산 OR | isTrue = (FALSE || TRUE); |
&& | 비교연산 AND | isFalse = (FALSE && TRUE); |
= += -= *= /= %= | 할당 | four = 4; |
주의: C와 유사한 다른 언어들과는 달리 &&와 || 연산자에서, 양쪽 피연산자는 항상 평가된다. 예를 들면,
<lsl>if (TRUE || 1/0) llSay( 0, "Aha!" );</lsl>
은 "Aha"를 말하는 대신 수학오류를 일으킨다.
주의: 부울 연산자의 우선 순위는 명확하지 않다. 표현 문석기에 우선권을 불완전하게 하거나, ||와 &&이 동일한 우선 순위를 갖는 버그가 있을 수 있다. 점검이 아직 결론내려지지 않았다. 그러므로 뭔가 미심쩍으면 괄호를 쓸 것.
주의: 평가의 순서는 다른 언어들에서와 마찬가지로 뒤에서부터이다. 다음 예제에서 x가 1부터 시작한다면 처음 두 줄은 거짓이며 그 다음 두 줄은 참이다:
<lsl>(x && (x = 0) == 0 && x)</lsl> <lsl>(x && (x = 0) == 0 && x == 0)</lsl> <lsl>(x == 0 && (x = 0) == 0)</lsl> <lsl>(x == 0 && (x = 0) == 0 && x)</lsl>
양쪽이 각각의 참 여부와는 무관하게 모두 평가된다.
왼쪽 유형 | 오른쪽 유형 | 결과 유형 | 설명 |
---|---|---|---|
integer | integer | integer | 왼쪽과 오른쪽을 더함 |
integer | float | float | 왼쪽과 오른쪽을 더함 |
float | integer | float | 왼쪽과 오른쪽을 더함 |
string | string | string | 왼쪽의 끝에 오른쪽을 연결 |
list | * | list | 왼쪽의 끝에 오른쪽을 연결 |
* | list | list | 오른쪽의 앞에 첨부 왼쪽을 끼워넣음 |
vector | vector | vector | 왼쪽과 오른쪽을 더함 |
rotation | rotation | rotation | 왼쪽과 오른쪽을 더함 회전을 더하는 데에 유용하지는 않다. 대신 * 혹은 / 을 사용할 것. |
기본 할당 연산자 | 축약 연산자 |
---|---|
a = a + 1 | a += 1 |
a = a – 1 | a -= 1 |
a = a * (n+1) | a *= (n+1) |
a = a / (n+1) | a /= (n+1) |
a = a % b | a %= b |
비트연산 도움말
AND | OR |
---|---|
~(a & b) |
~a | ~b
|
~a & ~b |
~(a | b)
|
a & ~b |
~(~a | b)
|
~(a & ~b) |
~a | b
|
왼쪽의 코드는 오른쪽의 코드와 일치한다. a와 b는 변수일 필요는 없다. 이런 방식은 복잡한 코드를 단순화시키는 데에 쓰일 수 있다.