前言
在lua中创建一个可以被外部访问的函数有两种方式,一种是table.function一种是table:function这两种函数的调用也是可以使用点和冒号两种方式调用的。
第一种使用table.function创建函数
local f = {}
function f.test(self,x,y)
print(self)
print(x)
print(y)
end
return f
使用点去访问
local f = require(f)
f.test(f,3,4)
打印出来的值是,self为f这个对象,x为3,y为4
使用冒号去访问
local f = require(f)
f:test(3,4)
打印出来的self还是这个对象,x为3,y为4
结论
当我们在创建一个方法的时候,我们时候点创建然后用冒号访问的时候,会默认把当前所被使用的对象给传进来。
第二种使用table:function创建函数
local f = {}
function f:test(x,y)
print(self)
print(x)
print(y)
end
return f
使用点去访问
local f = require("test")
t.test(3,4)
打印出来的值为:3,4,nil;
local f = require("test")
t.test(f,x,y)
这个时候打印出来值为f,3,4
使用冒号去访问
local f = require("test")
t:test(3,4)
打印出来的是:f,3,4
结论
在这个测试中可以表明,使用冒号创建一个函数的时候,在使用点去调用的时候,会默认在第一个参数前加一个self的参数。