【问题标题】:Passing 2d array to function in Lua将二维数组传递给 Lua 中的函数
【发布时间】:2010-12-05 16:07:11
【问题描述】:

可以将二维数组作为参数传递给函数吗? 我像这样初始化了一个数组:

tab={}
for i=1, 10 do
    tab[i]={}
    for z=1, 10 do
        tab[i][z]= 0
    end
end

我有这样的功能:

function foo(data)
    ...
    x = data[i][z] -- here i got error
    ...
end

给出了错误信息attempt to index field '?' (a nil value)

所有变量都被声明和初始化。

【问题讨论】:

    标签: function lua


    【解决方案1】:

    如果初始化正确,您的代码应该可以工作。

    例如,下面的代码示例将输出 3:

    function foo(data)
      local i, z = 1, 2
      print(data[i][z])
    end
    
    local tab={}
    for i=1, 10 do
      tab[i]={}
      for z=1, 10 do
        tab[i][z]= i + z
      end
    end
    
    foo(tab)
    

    【讨论】:

      【解决方案2】:

      也许您可以分享您的其余代码?以下运行没有错误:

      tab={}
      for i=1, 10 do
          tab[i]={}
          for z=1, 10 do
              tab[i][z]= 0
          end
      end
      
      function foo(data)
          print(data[3][2])
      end
      
      foo(tab)
      

      【讨论】:

        【解决方案3】:

        给出了错误消息尝试索引字段“?” (零值)

        我在更改某些变量的元表时遇到了此类错误。

        【讨论】:

          猜你喜欢
          • 2020-11-01
          相关资源
          最近更新 更多