如何从另一个 lua 文件中导入数据?

我有一个主 lua 文件 app.lua,在 app 中有一个“加载数据”的按钮。 注意:LUA 5.1 不是 5.2

数据文件也是一个 lua 文件,其中包含表格。

data1 = {
  {a,b,c},
  {1,2,3}
}
data2 = {
  {d,e,f}
}

目标是使这些表格随时可用于应用程序,无论何时选择加载文件。

我尝试了 lua 站点上的例子

    function dofile (filename)
      local f = assert(loadfile(filename))
      return f()
    end

但是 f() 只是打印一个大字符串。我似乎无法访问 f.data1[1] 例如。

点赞
用户5675002
用户5675002

文件你正在加载的不是数据表格,那是一段可以执行的匿名函数代码。你可以在 return f() 语句中运行这段代码。

但是请看一下这段代码做了什么 - 它并没有返回任何东西。相反,它给两个全局变量 data1data2 赋了值。你可以通过 data1[1] 来访问它们。

你可以 return 要加载的文件中的数据,这样就不会污染全局环境,也可能看起来就是你想象中的样子:

return {
  data1 = { {a,b,c}, {1,2,3} },
  data2 = { d,e,f}
}

在另一个文件中:

local f = assert(loadfile(filename))
my_data = f()
print(my_data.data1[1][1])
2019-11-04 07:59:03