C# 有this
,VB 有ME
. 什么是 Lua 等价物?
我正在尝试引用 Roblox 中脚本类的父级。
从Lua 文档第 2.5.9 节,自我引用通常是self
:
冒号语法用于定义方法,即具有隐式额外参数的函数
self
。因此,声明function t.a.b.c:f (params) body end
是语法糖
t.a.b.c.f = function (self, params) body end
正如Greg 已经指出的那样,您要查找的名称是self
.
但是,请注意,Lua 不是一种 OOP 语言,就像它是一种纯粹的过程或函数语言一样。它只是提供了实现 OOP 设计的所有底层机制。设计原则之一已表达为“提供机制,而不是策略”。因此,无法保证您运行的环境甚至使用继承,或者您可以找到任何给定对象的父对象。
查看 Lua 手册、Lua 编程和 Wiki 中与 OOP 特性相关的部分是个好主意:
在 Lua 中,您需要“自我”值。但是,您使用的是沙盒化的 ROBLOX。每个脚本都在自己的线程中运行,要引用脚本,您需要使用“脚本”,即 script.Parent
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
--Note script.Parent 将返回脚本所在的位置。如果添加另一个父级 script.Parent.Parent,它将返回父级的父级,依此类推。