我如何从另一个lua文件加载数据?

问题描述 投票:0回答:1

我有一个主要的lua文件app.lua,在该应用程序中,我有一个“加载数据”的按钮。注意: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]。

lua
1个回答
0
投票

您正在加载的文件不是数据表。那是一段代码,可执行的匿名函数。您可以在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])
© www.soinside.com 2019 - 2024. All rights reserved.