루아에서 조건문들 상의 논리 관계를 규정할 때 and, or, not 연산자를 사용한다. 예를 들어 변수 x가 -1과 1 사이의 값인지를 검사하려면


if -1 < x and x<1 then … end


와 같이 -1<x 와 x<1 을 and로 연결하면 된다. and 연산자는 조건식 두 개를 받아서 둘 다 true인 경우에만 true가 된다. or연산자는 둘 다 false 인 경우에만 false 가 된다.


x

y

x and y

x or y

true

true

true

true

true

fasle

false

true

fasle

true

false

true

fasle

fasle

false

false


만약 ‘변수 a가 -2보다 작거나 1보다 크다’는 조건을 검사하려면 다음과 같이 하면 될 것이다.


if a<-2 or a>1 then … end


 연산자 not 은 피연산자가 하나인 단항 연산자로서 not x 의 경우 x가 true이면 false가 되고 x가 false이면 true가 된다.


a = nil
b = 0
c = not a
d = not b


위의 예어서 c에 저장되는 값은 true이다. 왜냐면 nil은 false 로 간주되므로 false의 역은 true이기 때문이다. 루아에서는 오직 nil과 false 만 거짓으로 간주된다는 사실에 유의해야 한다. 숫자 0은 true이므로 d에는 false가 대입된다.


local b = 10
if not a then b=b+1 end


위 예에서 a 는 선언되지 않았으므로 nil이다. 따라서 then~end 블럭이 수행된다. not a 가 true이기 때문이다. 이 프로그램이 수행되면 b에는 11이 저장될 것이다.



Posted by 살레시오

댓글을 달아 주세요

  1. FINCHIP 2022.02.08 22:53  댓글주소  수정/삭제  댓글쓰기

    아니요 님
    if a==b
    print("true")
    not
    print("nil)
    이 가능하나요?