(→객체) |
(→객체) |
||
30번째 줄: | 30번째 줄: | ||
루아는 객체를 지원하지 않는 언어입니다. 그래도 테이블을 이용해서 객체 비슷하게 만들 수 있습니다. | 루아는 객체를 지원하지 않는 언어입니다. 그래도 테이블을 이용해서 객체 비슷하게 만들 수 있습니다. | ||
<syntaxhighlight lang="lua"> local point = function(x, y) --class 역할을 하는 익명 함수 | <syntaxhighlight lang="lua"> | ||
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( | local asdf = point(1, 2) | ||
asdf:print() -- 1:2 | |||
asdf:print() | asdf.print(asdf) -- 1:2 : 연산자가 아닌 경우 자기 자신을 입력해야 합니다. | ||
asdf:calcmean() -- 평균 계산 | |||
asdf: | print(asdf.mean) -- 평균 출력 1.5 | ||
</syntaxhighlight> | </syntaxhighlight> | ||
</div><div class="card" style=""> | </div><div class="card" style=""> |
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)으로 써야합니다.