首页 > 解决方案 > 从 Lua 中的模块内部引用模块中的变量/函数

问题描述

我正在编写电梯控制器。它使用一个“API”模块,具有类似的功能和类似的OpenDoor()Floor。如何在模块中使用这些值?

我试过使用self没有运气。

local API = {

Lift=script.Parent,

--and now the problem

LiftCar=(self?).Lift.Car,

}

return API

当我尝试使用时,由于不存在self而出现错误。self

标签: luaroblox

解决方案


Lua 中没有模块作为语言特性,只有表和词法范围。

如果您使用表格来表示您的模块(您这样做),您必须像处理表格一样处理它:LiftCar = API.Lift.Car,在您的情况下这是不可能的,因为API在解析分配时尚未定义local .

Lua 书的这一章总结了各种制作模块的方法。

两种最简单的方法是预先定义表:

local API = {}
API.Lift = script.Parent
...

或者将所有内容定义为本地并随后填充表格:

local function myfunction() do_something() end
local API = {my = myfuncion}

第一种选择是首选


推荐阅读