【问题标题】:How do I load data from another lua file?如何从另一个 lua 文件加载数据?
【发布时间】:2019-11-04 15:59:03
【问题描述】:

我有一个主 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】:

    您正在加载的文件不是数据表。那是一段代码,是可执行的匿名函数。您在 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])
    

    【讨论】:

    • 因此,如果我将返回数据设置为 my_data ,那么在返回文件的新结构(这是代码,这是有道理的)中,我是否能够更新该返回结构?在我读完数据后说更新数据1?
    • @SudoGaron 是的,这是一个可更新的数据。一张桌子。
    猜你喜欢
    • 1970-01-01
    • 2012-04-02
    • 2015-01-17
    • 1970-01-01
    • 1970-01-01
    • 2017-01-20
    • 1970-01-01
    • 2011-08-19
    • 2014-02-16
    相关资源
    最近更新 更多