Lua学习笔记之“.”和“:”的作用和用法

目录

1、博客介绍

2、内容

含义:

“:”声明方法并采取“:”的形式调用:

“:”声明方法并采取“.”的形式调用:

“.”声明方法并采取“.”的形式调用:

“.”声明方法并采取“:”的形式调用:

3、推送

4、结语


 

1、博客介绍

 

本篇博客作为Lua学习笔记之一,介绍关于方法中“.”和“:”的用法和不同含义,我们知道在声明方法的时候可以采用“.”或者“:”的写法,同时在调用方法的时候,也可以采用“.”和“:”的写法,这两种形式可能交叉存在,本篇博客就简单介绍一下几种情况。


2、内容

 

含义:

1、使用":"来声明方法,那么在接收参数时会默认去接收一个参数self,这个接收位置是隐藏的

2、使用"."来声明方法,在参数内的第一位会默认去接收self参数,这个参数不隐藏

3、使用":"来调用方法,在传递参数的时候,会默认传递一个self,这个self隐藏并置于所有参数之前

4、使用"."来调用方法,在传递参数的时候,第一位参数默认会被作为self传递过去,这个参数不会被隐藏

如下所示,方法testFunc1和方法testFunc2等同,并且下方调用输出结果相同

local func = {}

function func:testFunc1(a,b,c)
	print(a,b,c)
end

function func.testFunc2(self,a,b,c)
	print(a,b,c)
end

func:testFunc1(1,2,3)
func.testFunc1(self,1,2,3)

 

“:”声明方法并采取“:”的形式调用:

testFunc1是":"定义的方法,所以实际接收参数格式应为(self,a,b,c),self参数被隐藏

这里调用是采用“:”的形式调用,所以实际传递的参数为(self,1,2,3),self参数被隐藏

所以这里输出结果self是func表本身,abc为1 2 3

local func = {}

function func:testFunc1(a,b,c)
	print(self)
	print(a,b,c)
end

func:testFunc1(1,2,3)

-----------------------------------输出
table: 00C19238
1	2	3

 

“:”声明方法并采取“.”的形式调用:

testFunc1是":"定义的方法,所以实际接收参数格式应为(self,a,b,c),self参数被隐藏

这里调用是采用“.”的形式调用,传递的参数为(1,2,3),1会被当做self被传递

所以这里输出结果self为1,abc为2,3,nil

local func = {}

function func:testFunc1(a,b,c)
	print(self)
	print(a,b,c)
end

func.testFunc1(1,2,3)

-----------------------------------输出
1
2	3	nil

 

“.”声明方法并采取“.”的形式调用:

testFunc1是"."定义的方法,所以接收参数格式应为(self,a,b,c),self参数不会被隐藏

这里调用是采用“.”的形式调用,传递的参数为(func,1,2,3),func作为self被传递

所以这里输出结果self为func表,abc为123

local func = {}

function func.testFunc1(self,a,b,c)
	print(self)
	print(a,b,c)
end

func.testFunc1(func,1,2,3)

-----------------------------------输出
table: 00AB9350
1	2	3

 

“.”声明方法并采取“:”的形式调用:

testFunc1是"."定义的方法,所以接收参数格式应为(self,a,b,c),self参数不会被隐藏

这里调用是采用“:”的形式调用,实际传递的参数为(self,1,2,3),self为func本身

所以这里输出结果self为func表,abc为123

local func = {}

function func.testFunc1(self,a,b,c)
	print(self)
	print(a,b,c)
end

func:testFunc1(1,2,3)

-----------------------------------输出
table: 00BC92B0
1	2	3

3、推送

Github:https://github.com/KingSun5


4、结语

        若是觉得博主的文章写的不错,不妨关注一下博主,点赞一下博文,另博主能力有限,若文中有出现什么错误的地方,欢迎各位评论指摘。

       QQ交流群:806091680(Chinar)

       该群为CSDN博主Chinar所创,推荐一下!我也在群里!

  • 7
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值