사용자:하늘/메모장/루아

< 사용자:하늘‎ | 메모장
하늘 (토론 | 기여)님의 2021년 12월 31일 (금) 12:24 판 (→‎객체)

사용자:Cerulean/노트패드/styles.css 문서에 내용이 없습니다.

루아 '.' ':'

닷 연산자는 자기 자신을 가리키는 self를 따로 입력해야 하고 콜론 연산자는 self가 포함되어있다.

함수 호출 대체 형태

print "Hello World"          print("Hello World")
 dofile 'a.lua'               dofile ('a.lua')
 print [[a multi-line message]]         print([[a multi-line message]])
 f{x=10, y=20}                f({x=10, y=20})
 type{}                       type({})

괄호 생략 가능

객체

루아는 객체를 지원하지 않는 언어입니다. 그래도 테이블을 이용해서 객체 비슷하게 만들 수 있습니다.

local point = function (x, y) --- class 역할을 하는 익명 함수
    --- C++ class의 public:에 해당
    local obj = {}
    obj.x = x or 0
    obj.y = y or 0
    --- set point x, y
    function obj:set(x, y)
        self.x = x;
        self.y = y
    end
    --- x값 얻기
    ---@return number
    function obj:getX() return self.x end
    --- y값 얻기
    ---@return number
    function obj:getY() return self.y end
    --- x:y 출력
    function obj:print()
        print(self.x .. ':' .. self.y)
    end
    --- x와 y의 평균을 계산
    function obj:calcmean()
        self.mean = (self.x + self.y) / 2
    end
    return obj -- 테이블 반환
end

local asdf = point(1, 2)
asdf:print() -- 1:2
asdf.print(asdf) -- 1:2 : 연산자가 아닌 경우 자기 자신을 입력해야 합니다.
asdf:calcmean() -- 평균 계산
print(asdf.mean) -- 평균 출력 1.5

frame

#invoke 문으로 호출되는 루아 함수는 p:main(frame)의 형태로 쓸 수 없습니다. 무조건 p.main(frame)으로 써야합니다.