Lua中是否可以将分别定义的函数分配给对象作为该对象的方法,并访问“self”?

Lua中是否可以将一个分别定义的函数分配给一个对象作为该对象的方法,并能够访问这个对象的“self”?

SomeObject = {name = "Jack"}

function someExternalFunction ()
    print(self.name)
end
SomeObject.someMethodName = someExternalFunction -- 只是一个例子
SomeObject:someMethodName() --> 输出“Jack”

原文链接 https://stackoverflow.com/questions/69667917

点赞
stackoverflow用户7396148
stackoverflow用户7396148

self 并不是什么神奇的东西,也没有什么特殊之处。

当你调用一个函数类似于 object:method() 的写法时,它其实等同于 object.method(object)

当你定义一个类似于 function object:method() 的函数时,它会隐式地拥有一个叫 self 的第一个参数,所以它的定义等同于 function object.method(self)

因此,你只需要正确地定义你的外部函数,它就能正常工作。

SomeObject = {name = "Jack"}

function someExternalFunction(self)
    print(self.name)
end
SomeObject.someMethodName = someExternalFunction
SomeObject:someMethodName() --输出 "Jack"
2021-10-21 19:49:25