我有兴趣在lua
中的表格中插入一个表格mytable1={"apple","banana","grape"}
mytable2={"one","two","three"}
我想在mytable2
的第4位插入mytable1
...所以在合并之后它应该看起来有点像这样
mytable1={"apple","banana","grape",{"one","two","three"}}
到目前为止,我试过这种方式:
table.insert(mytable1,4,mytable2)
print(mytable[4])
结果是
table: 0x900b128
代替mytable2
..
我很困惑。请告诉我我在哪里做错了什么是正确的方法。
答案 0 :(得分:1)
可能:
tTable = { "apple", "banana", "grape", {"one", "two", "three"}}
tTable[1]
> apple
tTable[4][1]
> one
在桌面上打印不会返回它的值,但表示它是一张桌子及其地址。
假设您只想显示表格中的所有内容:
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
答案 1 :(得分: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 :(得分:0)
你已经正确地完成了它;您只是对值,变量和打印做出了错误的假设。
mytable2
是变量名。除了调试之外,您通常不会将变量名称视为字符串。
表格是一个值。没有值有名称。 table.insert
向表中添加值(或值引用)。在这种情况下,该值是一个表,因此对它的引用将添加到mytable1
变量引用的表中。
print
在其参数上调用tostring
。表值上的tostring
返回唯一标识符的数量。 print(mytable2)
将打印与print(mytable1[4])
相同的字符串,因为它们都引用同一个表。