lua:回顾当初忽略的——什么时候用点,什么时候用冒号

区分什么时候用点什么时候用冒号

两点:1.看函数的定义;2.看函数的调用

举例1:写一个类,在类中用.定义函数

h = {}

h.x = 0
h.y = 0

function h.cc(x, y)
    print(x, y)
    print(h.x, h.y)  //如果这里写self.x, self.y 会报错attempt to index global 'self' (a                      nil value)   无论是用.调用还是用:调用
end

//调用
h.cc(8, 7) ===>输出 8 7
                    0 0
h:cc(8, 7) ===>输出 table 8 
                     0 0

函数的定义:用点定义相当于给table添加一个字段;用冒号定义相当于隐藏了一个默认参数self。上面例子 用的是点定义的,所以里面 如果调用self则是不存在的,就会报错。

普通函数调用是用点(.),用冒号(:)调用函数会把调用的那个对象当做第一个参数传进去,所以上面例子h:cc(8, 7)输出第一行是 table 和 8,它把h作为第一个参数传进去了。

举例2:写一个类,在类中用:定义函数

h = {}

h.x = 0
h.y = 0

function h:cc(x, y)
    print(x, y);
    print(h.x, h.y);//如果这里写self.x, self.y 在h.cc时会报错attempt to index global 'self' (a nil value)   h:cc则正常打印
end

//调用
h.cc(8, 7); 输出===> 7 nil
                     0 0
h:cc(8, 7); 输出===> 8 7
                     0 0

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值