【发布时间】:2016-12-16 19:37:27
【问题描述】:
我有一个函数,在其中我声明了一个全局变量obs,在一个函数内部并分配了一些值。如果我想在其他一些lua文件中访问它,它会给出一个错误:“尝试调用obs一个 nil 值,我需要做什么才能访问它?
这是它的虚拟代码
//A.lua
function X()
obs = splitText(lk,MAXLEN)
end
//B.lua
function Y()
for i=1, #obs do //error at this line
end
end
【问题讨论】:
-
如果你在 B.lua 之上有一个 require 语句,它调用 A.lua 就必须工作。并确保在调用函数 Y() 之前调用函数 X()。
-
哦,有可能,splitText 提供 nil
-
哦,不,不。 splitText 根本没有提供 NIL。实际上,还有其他存储价值的方法吗?我只是不能为 A.lua 做 require 声明(我在这里无法解释),但是对于我拥有的那种代码是不可能的。我只需要找到一种方法将这个值存储在 B.lua 中可以访问的某个地方
-
很难理解你的设计。你有不同的选择,取决于你的设计。你可以直接从B中调用X,也可以在Y内部调用X。也许在X中返回obs会更好,所以你可以在Y中调用X并使用返回值。您也可以将函数 X 作为参数传递给函数 Y。
-
你也可以写一个文件来存储obs,然后在B中读取,但我认为这是最糟糕的方式:)
标签: lua