lua中.和:均可以用于方法的声明和调用。和table配合使用。
:和.最大的不一样点,就是:会把调用者自身,传入到函数中。
以下代码:java
c = {a=1,b=2} function c:foo1() print(self.a,self.b) end c:foo1()
定义了一个名字为c的table,使用:在table中声明了一个foo1方法,
在方法内部使用self来访问table中的变量。这里的self相似于java类中的this。
调用的时候使用:来进行调用。这样就能输出 1,2。函数
假如使用.号调用,就必需要传入c自己。c.foo1(c)this
这段代码也能够用.号声明。.号声明的代码中,就不能有self。要手动传入obj对象。lua
function c.foo2(obj) print(obj.a,obj.b) end c.foo2(c)
固然调用的时候,也能够使用c:foo2()。会自动把c自己做为参数传入到方法中。这样等效于c.foo2(c)code