Lua点号和冒号区别
发布时间:2020-12-14 22:07:55 所属栏目:大数据 来源:网络整理
导读:定义的时候冒号默认接收self参数 调用的时候冒号默认传递调用者自己为参数 而句号要显示传递或接收self参数 -- 例如:句号定义,需要显示传递或接收 [plain] ? view plain copy a?=?{?x?=?1?}?? function?a.fun(self)??? print(self.x)?? end?? ?? a.fun(a)-
定义的时候冒号默认接收self参数
这样调用要传递self,比较麻烦,所以lua给一个方便的方法 将函数定义改成冒号,就可以省略self参数 copy
将调用改成冒号,就可省略传自己进去 copy
最后说明一下,如果不用self,直接在函数里使用x是不行的 之前以为可以像c++类一样,成员函数可以直接使用类成员变量
?
lua本身没有类功能,它的类功能是通过元表来实现的。类的函数调用通过obj:function方式。但类的成员赋值又是通过obj.var方式来实现的。翻阅lua 5.1手册,发现对于冒号只有这么一段解释。(lua 5.1手册)
冒号语法可以用来定义方法, 就是说,函数可以有一个隐式的形参 self。 因此,如下写法:
? ? function t.a.b.c:f (params) body end 是这样一种写法的语法糖: ? ? t.a.b.c.f = function (self,params) body end
然后我做了如下测试,来弄清楚冒号的用法
[LUA-print] tf
[LUA-print] 10 [LUA-print] 20 [LUA-print] 30
发现冒号会提供一个内置table供function之间通信。
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |