연산자 는 작업이나 조건부 평가를 수행하는 상징입니다.
논리
논리 연산자는 주어진 인수의 부울 값에 따라 값을 반환합니다.Logical operators return values depending on the boolean values of the given arguments.인수가 false 또는 nil가 아니면 연산자가 그것을 true로 평가합니다.다른 많은 언어와 달리 Luau는 0과 빈 문자열을 모두 true로 간주합니다.다음 표에서는 논리 연산자가 조건에서 어떻게 동작하는지 요약합니다 조건.
운영자 | 설명 |
---|---|
and | 두 조건 모두 참인 경우에만 true로 평가 |
or | 조건이 모두 참이면 true로 평가되며 |
not | 조건의 반대로 평가 |
그리고
이진 연산자 and는 두 인수 중 하나를 반환합니다.첫 번째 인수가 true로 평가되면 두 번째 인수를 반환합니다.그렇지 않으면 첫 번째 인수를 반환합니다.
print(4 and 5) -- 5print(nil and 12) -- 무효print(false and 12) -- 거짓print(false and true) -- 거짓print(false and false) -- 거짓print(true and false) -- 거짓print(true and true) -- true
여러 조건을 테스트하기 위해 and 를 사용하여 제어 구조 (예: if 문 및 while 루프 )에서 을 사용할 수 있습니다.예를 들어, 다음 - 문은 두 조건이 모두 참인지 테스트합니다:
local pasta = truelocal tomatoSauce = trueif pasta == true and tomatoSauce == true thenprint("We have spaghetti dinner")elseprint("Something is missing...")end-- Output: We have spaghetti dinner
or
이진 연산자 or는 두 인수 중 하나를 반환합니다.첫 번째 인수가 true로 평가되면 첫 번째 인수를 반환합니다.그렇지 않으면 두 번째 인수를 반환합니다.
local y = x or 1print(y) -- x가 존재하지 않으므로 x가 없고 따라서 0입니다 1 because x doesn't exist and is therefore nillocal d = falselocal e = d or 1print(e) -- 1은 d가 false이기 때문입니다print(4 or 5) -- 4print(nil or 12) -- 12print(false or 12) -- 12print(false or true) -- 참print(false or false) -- 거짓print(true or false) -- 참print(true or true) -- true
를 사용하여 컨트롤 구조에서 복잡한 논리 테스트를 수행할 수 있습니다.예를 들어, 다음 - 문은 두 조건이 참인지 아니면 세 번째 조건이 참인지 테스트합니다:
local pasta = falselocal tomatoSauce = truelocal garlicBread = trueif (pasta == true and tomatoSauce == true) or garlicBread == true thenprint("We have either spaghetti dinner OR garlic bread")elseprint("Something is missing...")end-- Output: We have either spaghetti dinner OR garlic bread
아님
단일 연산자 not는 인수의 반대 부울 값을 반환합니다.인수가 false 또는 nil 인 경우 반환 된 값은 true 입니다.그렇지 않으면, 반환 false 합니다.
print(not true) -- 거짓print(not false) -- 참print(not nil) -- 참print(not "text") -- 거짓print(not 0) -- false
변수가 not 또는 false 인 경우 조건부 또는 루프를 트리거하기 위해 nil 연산자를 사용할 수 있습니다.
local nilVariable -- 변수가 선언되었지만 값이 없으므로 공백입니다local falseVariable = false -- 변수는 false의 값으로 선언됩니다if not nilVariable thenprint(nilVariable) -- nil이 true가 아니기 때문에 "nil"을 출력합니다endif not falseVariable thenprint(falseVariable) -- 출력은 "false"이므로 false가 true가 아닙니다end
전체 다중 조건 문의 반대를 테스트하기 위해 not 연산자를 사용할 수도 있습니다.다음 코드 샘플에서는 세 가지 중 하나가 네 가지보다 크거나 다섯 가지가 네 가지보다 크지 않은 조건부 테스트 if - then을 수행합니다.
local three = 3local four = 4local five = 5if not (three > four or five < four) thenprint("Three is less than 4 and five is greater than 4.")end-- Output: Three is less than 4 and five is greater than 4.
관계형
관계 연산자는 두 매개 변수를 비교하고 boolean : true 또는 false 를 반환합니다.
운영자 | 설명 | 예시 | 연관된 메타메소드 |
---|---|---|---|
== | 같음을 | 3 == 5 → false | __eq |
~= | 같지 않음 | 3 ~= 5 → true | |
> | 보다 큰 | 3 > 5 → false | |
< | 미만 | 3 < 5 → true | __lt |
>= | 보다 크거나 같음 | 3 >= 5 → false | |
<= | 미만이나 같음보다 | 3 <= 5 → true | __le |
산술
Luau는 지수, 곱셈, 단일 부정 연산과 함께 일반적인 이진 연산자를 지원합니다.
운영자 | 설명 | 예시 | 연관된 메타메소드 |
---|---|---|---|
+ | 추가 | 1 + 1 = 2 | __add |
- | 빼기 | 1 - 1 = 0 | __sub |
* | 곱셈 | 5 * 5 = 25 | __mul |
/ | 분할 | 10 / 5 = 2 | __div |
// | 층 분할 | 10 // 4 = 2``-10 // 4 = -3 | __idiv |
^ | 지수 함수 | 2 ^ 4 = 16 | __pow |
% | 모듈 | 13 % 7 = 6 | __mod |
- | 단일 부정 | -2 = 0 - 2 | __unm |
복합 할당
복합 할당 연산자를 사용하여 첫 번째 매개 변수가 변수의 현재 값인 작업의 결과와 동일한 변수를 설정할 수 있습니다.
복합 할당에서의 작업은 한 번 발생합니다.예를 들어, 식이 테이블에서 랜덤 인덱스를 생성하면 Luau는 작업과 할당 모두에 동일한 인덱스를 사용합니다.
다음 예제에서는 local x = 3를 가정합니다.
운영자 | 작업 | 예시 | 새로운 값 x의 |
---|---|---|---|
+= | 추가 | x += 2 | 5 |
-= | 빼기 | x -= 2 | 1 |
*= | 곱셈 | x *= 2 | 6 |
/= | 분할 | x /= 2 | 1.5 |
//= | 층 분할 | x //= 2 | 1 |
%= | 모듈 | x %= 2 | 1 |
^= | 지수 함수 | x ^= 2 | 9 |
..= | 연결 및 결합 | x ..= " World!" | "3 World!" |
기타
기타 연산자에는 연결 및 길이 가 포함됩니다.
운영자 | 설명 | 예시 | 연관된 메타메소드 |
---|---|---|---|
.. | 두 문자열을 연결합니다 | print("Hello " .. "World!") | __concat |
# | 테이블 길이 | 만약 tableVar = {1, 2, 3} 이면, #tableVar == 3 이다. | __len |