Lua 点号与冒号

Lua 点号与冒号
      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

然后我做了如下测试,来弄清楚冒号的用法
function test()
	t.f()
	t:g()
	t:h()
	t.i()
    t:h()
    t.j(t)
    t:h()
end

t = {}

function t.f()    
    print("tf");
end

function t:g()
    self.x = 10
end

function t:h()
    print(self.x)
end

function t.i()    
    t.x = 20
end

function t.j(k)    
    k.x = 30
end

输出:
[LUA-print] tf
[LUA-print] 10
[LUA-print] 20
[LUA-print] 30

发现冒号会提供一个内置table供function之间通信。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值