본문 바로가기
프로그래밍/언어_스크립트

[lua] 루아의 독특한 문법 몇가지 #2

by 써드아이 2013. 11. 14.

#1


Something{ "data1", "data2", "data3", "data4" }


Something( { "data1", "data2", "data3", "data4" } )


두 표현은 동일하다. - Something 이라는 함수에 테이블을 인자로 넘기고 있다.





#2


setmetatable( t1, mt )


t1의 메타 테이블로 mt을 설정한다.

당연히 t1 과 mt는 테이블 구조여야함





#3


메타테이블의 __add, __mul, __sub, __div, __unm, __mod, __pow, __concat, __eq, __lt, __le 등을 가지고

연산자 재정의를 할 수 있다.  +, *, -, /, ~, %, ^, ==, <=, >= 


위 항목에 각 연산을 수행할 함수를 정의하여 할당하면 된다.





#4


Something = { item = 0 }


function Something.func1( self )

self.item = 100

end


호출시에 ----> obj.func1( obj )




function Something:func2( )

self.item = 200

end


호출시에 ----> obj:func2()





#5



Something = { item = 0 }


function Something:New( o )

o = o or { }

setmetatable( o, self )

self.__index = self

return o

end


상속


Specialthing = Something:New()


s = Specialthing:New( { item = 100 } )