C#有this
,VB有ME
。什么是Lua等价物?
我正在尝试引用Roblox中脚本类的父级。
答案 0 :(得分:14)
从Lua documentation section 2.5.9开始,自引用通常是self
:
冒号语法用于定义方法,即函数 有一个隐含的额外参数
self
。因此,声明function t.a.b.c:f (params) body end
是
的语法糖t.a.b.c.f = function (self, params) body end
答案 1 :(得分:10)
作为Greg pointed out already,您要查找的名称为self
。
但是,请注意Lua不是OOP语言,而是纯粹的程序或功能语言。它只是提供了实现OOP设计的所有低级机制。其中一个设计原则被表达为“提供机制,而不是政策”。因此,无法保证您运行的环境甚至使用继承,或者您可以找到任何给定对象的父级。
最好回顾一下Lua手册,Lua编程以及与OOP功能相关的Wiki的各个部分:
答案 2 :(得分:3)
在Lua中,你会想要“自我”的价值。但是,您使用的是ROBLOX,它是沙箱。每个脚本都在它自己的线程中运行,要引用脚本,你需要使用“script”,即script.Parent
答案 3 :(得分:2)
local Table = {}
Table.Var = "Testing"
function Table:Test()
print(self.Var)
end
Table:Test()
或
local Table = {}
Table.Var = "Testing"
function Table.Test(self)
print(self.Var)
end
这两个函数都会做同样的事情。
- 编辑 -
仅适用于表格。如果您尝试获取脚本的父级,则需要使用script.Parent
- 注 script.Parent将返回脚本所在的位置。如果添加另一个父脚本script.Parent.Parent,它将返回父项的父项,依此类推。