【问题标题】:Lua: Can I have a comma after a function that returns a table?Lua:我可以在返回表的函数后面加逗号吗?
【发布时间】:2018-02-10 00:27:40
【问题描述】:

所以我的 Lua 代码看起来像这样:

function makeTable()
    return {1,2,3}
end

table = {
    makeTable(),
    {4,5,6}
}

table 的结果应该是{{1, 2, 3}, {4, 5, 6}}

我担心makeTable() 后面的逗号。这在 Lua 中对于返回表的函数是否有效,还是有更好的方法让返回表的函数成为表的第一项?

【问题讨论】:

    标签: function lua lua-table


    【解决方案1】:

    这行得通。您的代码或您想要精确实现的目标有什么问题吗?或者,如果您愿意,您可以这样做:

    function makeTable()
        return {{1,2,3}}
    end
    
    t = maketable()
    table.insert(t, {4,5,6})
    

    【讨论】:

    • 我问是因为我对 Lua 不太熟悉(函数后面有逗号似乎很奇怪),而且我正在修改 Factorio(使用 Lua 作为其 mod API)并且需要创建很多相关的物品和食谱。
    • 你可以用 LUA 做一些非常邪恶的事情,它有点像 Javascript,你可以滥用代码中的废话并通过奇怪的滑稽动作让它工作。如果您要使用相同的模式创建多个项目,您也可以添加参数,例如:function makeTable(additionalpart) { return {{1,2,3},additionalpart} end 然后将其称为:t = makeTable({4,5,6}) 我还建议您在变量应该使用local 前缀时不要暴露在其他地方。最后,table 用于表函数,这是我之前编辑的一部分。使用其他东西:)
    【解决方案2】:

    这是完全有效的Lua。尝试将其添加到代码的底部:

    io.write("{")
    for i,v in ipairs(table) do 
        io.write("{")
        for j,m in ipairs(v) do
           io.write(m)
           io.write(",") 
        end
        io.write("},") 
    end
    print("}") 
    

    你会看到它打印出来:{{1,2,3,},{4,5,6,},}

    您正确地将一个数组添加到您的二维数组中。

    【讨论】:

      【解决方案3】:

      你可以这样做。但我想这会更干净:

      function makeTable()
          return {1,2,3}
      end
      
      local t = {}
      table.insert(t, makeTable())
      table.insert(t, {4, 5, 6})
      

      【讨论】:

        【解决方案4】:

        这 100% 没问题。

        您写道“在函数后加逗号似乎很奇怪”。嗯,这个逗号所做的事情与表表达式中的逗号总是做的完全一样:它将一个表值与下一个表值分开。

        换句话说,{ makeTable(), {4,5,6} }{1,2} 完全相同,只是它用makeTable() 代替了1,而{4,5,6} 代替了2

        【讨论】:

          猜你喜欢
          • 2014-09-08
          • 2012-03-17
          • 1970-01-01
          • 2020-06-13
          • 2011-01-15
          • 2016-11-19
          • 1970-01-01
          • 2015-12-05
          • 2011-04-18
          相关资源
          最近更新 更多