定义的时候冒号默认接收self参数
调用的时候冒号默认传递调用者自己为参数
而句号要显示传递或接收self参数
这样调用要传递self,比较麻烦,所以lua给一个方便的方法
将函数定义改成冒号,就可以省略self参数
将调用改成冒号,就可省略传自己进去
调用的时候冒号默认传递调用者自己为参数
而句号要显示传递或接收self参数
-- 例如:句号定义,需要显示传递或接收
a = { x = 1 }
function a.fun(self)
print(self.x)
end
a.fun(a)--输出1,将a自己做为参数传给fun函数的self 这样调用要传递self,比较麻烦,所以lua给一个方便的方法
将函数定义改成冒号,就可以省略self参数
function a:fun()
print(self.x)
end
a.fun(a) 将调用改成冒号,就可省略传自己进去
function a:fun()
print(self.x)
end
a:fun() 最后说明一下,如果不用self,直接在函数里使用x是不行的
之前以为可以像c++类一样,成员函数可以直接使用类成员变量
function a:fun()
print(x)--将输出nil,找不到这个x
end
本文详细解释了在Lua编程语言中使用冒号(:)与句号(.)定义及调用成员函数的不同之处,并通过实例展示了如何省略self参数。
4041

被折叠的 条评论
为什么被折叠?



