1、博客介绍
2、内容
含义:
“:”声明方法并采取“:”的形式调用:
“:”声明方法并采取“.”的形式调用:
“.”声明方法并采取“.”的形式调用:
“.”声明方法并采取“:”的形式调用:
3、推送
4、结语
本篇博客作为Lua学习笔记之一,介绍关于方法中“.”和“:”的用法和不同含义,我们知道在声明方法的时候可以采用“.”或者“:”的写法,同时在调用方法的时候,也可以采用“.”和“:”的写法,这两种形式可能交叉存在,本篇博客就简单介绍一下几种情况。
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
Github:https://github.com/KingSun5
若是觉得博主的文章写的不错,不妨关注一下博主,点赞一下博文,另博主能力有限,若文中有出现什么错误的地方,欢迎各位评论指摘。
QQ交流群:806091680(Chinar)
该群为CSDN博主Chinar所创,推荐一下!我也在群里!