lua中.和:的区别

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

相关文章
相关标签/搜索