【问题标题】:Multiple entries for one element of table in lualua中表的一个元素的多个条目
【发布时间】:2015-05-06 23:16:28
【问题描述】:

我有兴趣在 lua 中的表中插入表

mytable1={"apple","banana","grape"}
mytable2={"one","two","three"}

我想在 mytable1 的第 4 位插入 mytable2...所以合并后它应该看起来像这样

mytable1={"apple","banana","grape",{"one","two","three"}}

到目前为止,我是这样尝试的:

table.insert(mytable1,4,mytable2)
print(mytable[4])

结果是 table: 0x900b128 而不是 mytable2.. 我很困惑。请告诉我我做错了什么以及正确的方法是什么。

【问题讨论】:

  • 你认为那个输出有什么问题吗? print 不打印表的键和值,它只打印表的 ID table: 0xXXXXXXX

标签: lua


【解决方案1】:

这就是打印表格的方式。试试print(mytable1)print(mytable2),你会看到类似的输出。您使用了插入该表的正确方法。试试print(table1[4][1])。它应该打印"one"

或获取所有值尝试:

for index, value in ipairs(table1[4]) do
  print(value);
end

这将打印"one""two" 和“three"

【讨论】:

    【解决方案2】:

    有可能:

    tTable = { "apple", "banana", "grape", {"one", "two", "three"}}
    tTable[1]
    > apple
    tTable[4][1]
    > one
    

    在表格上打印不返回它的值,但指示它是一个表格和它的地址。

    来源:table inside table in Lua

    假设您只想显示表格中的所有内容:

    tTable = { "apple", "banana", "grape", {"one", "two", "three"}}
    
    for k,v in pairs(tTable) do
      if type(k) == "table" then
        for _,i in ipairs(k) do
          print(i)
        end
      else
        print(v)
      end
    end
    > apple 
    > banana
    > grape
    > one
    > two
    > three
    

    【讨论】:

      【解决方案3】:

      你做对了;您只是对值、变量和打印做出了错误的假设。

      mytable2 是一个变量名。除非您正在调试,否则您通常不会将变量名称视为字符串。

      表是一个值。没有值有名称。 table.insert 将值(或值引用)添加到表中。在这种情况下,该值是一个表,因此对它的引用将添加到由mytable1 变量引用的表中。

      print 在其参数上调用tostring。表值上的tostring 返回相当于唯一标识符的内容。 print(mytable2) 将打印与 print(mytable1[4]) 相同的字符串,因为两者都引用同一个表。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2023-02-17
        • 2017-07-05
        • 2023-04-02
        • 2023-03-03
        • 1970-01-01
        • 2021-09-28
        • 2021-09-20
        • 1970-01-01
        相关资源
        最近更新 更多