是否可以在 lua 中将一个单独定义的函数分配给一个对象作为对象的方法来访问 'self'?
Is it possible to assign in lua a separately defined function to an object as the object's method with access to 'self'?
是否可以将一个单独定义的函数作为对象的方法分配给一个对象,并能够访问该对象的self
?
SomeObject = {name = "Jack"}
function someExternalFunction ()
print(self.name)
end
SomeObject.someMethodName = someExternalFunction -- this is just an example
SomeObject:someMethodName() --> prints "Jack"
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() --prints "Jack"
是否可以将一个单独定义的函数作为对象的方法分配给一个对象,并能够访问该对象的self
?
SomeObject = {name = "Jack"}
function someExternalFunction ()
print(self.name)
end
SomeObject.someMethodName = someExternalFunction -- this is just an example
SomeObject:someMethodName() --> prints "Jack"
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() --prints "Jack"