NGMsoftware

NGMsoftware
로그인 회원가입
  • 매뉴얼
  • 학습
  • 매뉴얼

    학습


    기타 [루아] Lua 스크립트의 조건문과 반복문

    페이지 정보

    본문

    안녕하세요. 엔지엠소프트웨어입니다. 이전 시간에 루아 개발 환경을 설치하고, 간단한 예제를 몇가지 실습 해봤습니다. 오늘은 루아스크립트의 조건문과 반복문에 대해서 알아볼건데요. 프로그래밍 언어에서 가장 중요한 부분이라서 꼭~ 이해하고 넘어가는게 좋을거예요^^

     

    1. 조건문

    루아 언어에서 조건문은 VB와 비슷합니다. Java나 C#와는 다른데요. 저도 처음에 VB를 하다가 Java로 넘어올 때 문법이 달라서 햇갈렸던 적이 있습니다. 조건이란 참(True)과 거짓(False)으로 구분되는 어떤 동작을 실행하는 방법입니다. 설명이 좀 어려운데요. 단순하게 이야기 하면 이렇습니다. "배가 고프면 밥을 먹고, 아니면 그냥 있는다"와 같습니다. 아래 예제를 보면서 이해하는게 좋겠습니다.

    function add(a, b)
        return a + b
    end
    
    a = 10
    b = 20
    
    bar = add(a, b)
    
    function condition()
        if 10 > bar then
            return "NGM"
        else
            return "software"
        end
    end
    
    if a == 10 then
        print "a is 10"
    elseif a == 20 then
        print "a is 20"
    else
        print "unknown"
    end

     

    a 변수 값이 10이므로 아래와 같이 "a is 10"이 출력됩니다.

    7CGSy74.jpg

     

     

    2. 반복문

    반복문은 제어문의 조건문처럼 어떤 조건이 만족할 때까지 반복하는 명령문입니다. 루아에서는 while 반복뿐만 아니라 for, repeat 2개의 반복문이 존재합니다. 대부분의 언어들이 제공하는 반복문이 모두 있습니다. 참고로, 컴파일 언어들이 foreach를 제공하는데요. 루아에서도 객체를 반복할 수 있는 Generic 반복 함수가 존재합니다.

    function whileTest()
        local foo = 10
        while foo ~=0 do
            print (foo)
            foo = foo - 1
        end
    end
    
    function repeatTest()
        local foo = 10
        repeat
            print (foo)
            foo = foo - 1
        until foo == 0
    end
    
    repeatTest()
    whileTest()

     

    whileTest 함수 내부에 선언된 로컬 변수 foo는 0이 아닐때까지 내부 실행 영역을 반복합니다. 이 때 주의해야 할 점은 while ~ 조건 ~ do라고 사용해야하고, 동시에 while 영역의 종료점에 end 키워드를 사용해서 영역이 끝나는 부분이라고 알려줘야 합니다. repeatTest 함수도 결과는 동일합니다. until 키워드에서 foo가 0과 같을 때까지라고 되어 있는것 같지만, foo가 0이 아닐 때 코드를 종료합니다. 아래는 가장 많이 사용하는 for 반복문입니다.

    for foo = 1, 4 do
        print (foo)
    end
    
    for foo = 1, 10, 2 do
        print (foo)
    end

     

    코드를 실행하면 아래와 같은 결과를 확인할 수 있습니다. 첫번째 for 반복문에서 1부터 4까지 출력하고, 두번째 for 반복문은 2씩 건너뛰면서 출력합니다.

    aOYcrMD.jpg

     

     

    마지막으로 Generic loop in for에 대해 알아볼께요. pairs, ipairs, next, io.lines(), file:lines() 및 사용자 정의 반복문등 다양한 방식으로 반복문을 사용할 수 있습니다. 대표적으로 pairs, ipairs, next에 대해 예제를 실습 해보도록 할께요. pairs는 키/값의 쌍으로 된 반복 함수입니다. 파이썬의 딕셔너리를 출력하는것과 동일합니다.

    foo = {a=1, b=2, c=3, "NGMsoftware"}
    
    for key, value in pairs(foo) do
        print (key, value)
    end

    SY4bzSw.jpg

     

     

    여기까지 간단하게 조건문과 반복문에 대해서 알아봤습니다. 다음에는 좀 더 유익한 내용으로 찾아올께요. 사실, 루아를 잘 사용하지 않다보니 이 강좌가 필요한 분들이 있을지 의문이긴 합니다. 대부분은 C나 C++로 만들어진 패키지를 붙여서 호출하거나 간단하게 테스트할 때 사용하니까요. 아무튼, 다음 내용도 기대해주세요^^

     

    개발자에게 후원하기

    MGtdv7r.png

     

    추천, 구독, 홍보 꼭~ 부탁드립니다.

    여러분의 후원이 빠른 귀농을 가능하게 해줍니다~ 답답한 도시를 벗어나 귀농하고 싶은 개발자~

    감사합니다~

    • 네이버 공유하기
    • 페이스북 공유하기
    • 트위터 공유하기
    • 카카오스토리 공유하기
    추천0 비추천0

    댓글목록

    등록된 댓글이 없습니다.