Method(方法)¶
Time:2 分钟
方法为属于指定对象的特殊函数。常见的 Roblox 方法包括 Instance/Destroy|Instance:Destroy()
、Instance/Clone|Instance:Clone()
和 Instance/FindFirstChild|Instance:FindFirstChild()
等。
方法的作用类似于存储在对象中的函数,其访问方式与表中函数的访问方式相同。但方法的调用方式受其某项特殊属性的影响。
下面两行代码效果相同,都使用了参数 testObject
对函数 testFunction()
进行调用。请注意示例中点式标记法(.
)与冒号标记法(:
)的不同之处。
testObject.testFunction(testObject)
testObject:testFunction()
以上示例中,第二行代码(方法调用)由于不需要重新输入变量名称而在使用方面更为简洁。
自定义方法¶
开发者可以通过创建自定义方法来保持代码的整洁,并使代码中的表更具动态性。如果希望创建自定义方法,首先需要添加应用该方法的表。请参考以下示例:
local testButton = {
enabled = true,
imageActivated = "rbxgameasset://Images/ImageButtonActivated",
imageNormal = "rbxgameasset://Images/ImageButtonNormal"
}
当向 testButton
表添加方法时,请在表中包含相应键值对,其中键为自定义方法的名称,而值为方法函数。请看下列示例:
local testButton = {
enabled = true,
imageActivated = "rbxgameasset://Images/ImageButtonActivated",
imageNormal = "rbxgameasset://Images/ImageButtonNormal",
changeEnabled = function(self)
self.enabled = not self.enabled
end
}
调用方法¶
当将函数作为方法调用时,开发者将自动传递一个参数作为表本身,如上例代码示例中一般由 self
引用。若希望对此进行证明,可以直接输出 testButton.enabled
的值,且在方法中输出 self.enabled
的值:
local testButton = {
enabled = true,
imageActivated = "rbxgameasset://Images/ImageButtonActivated",
imageNormal = "rbxgameasset://Images/ImageButtonNormal",
changeEnabled = function(self)
print(self.enabled)
self.enabled = not self.enabled
end
}
print(testButton.enabled)
-- Call the method
testButton:changeEnabled()
true
true
附加参数¶
开发者可以如使用其他函数般向方法函数传递参数。但需要注意的是:由于 self
为方法的父表,增添的附加参数需要在该 self
参数后面列出。
local testButton = {
enabled = true,
imageActivated = "rbxgameasset://Images/ImageButtonActivated",
imageNormal = "rbxgameasset://Images/ImageButtonNormal",
changeEnabled = function(self, isEnabled)
self.enabled = isEnabled
print(self.enabled)
end
}
print(testButton.enabled)
-- Call the method with an additional argument
testButton:changeEnabled(false)
true
false
***Roblox官方链接:Method(方法)