2015-02-06 62 views
0

我想了解如何从表中的值打印字符串。例如。从表值返回字符串Lua

TestTable = { "Apples" = 0, "Oranges" = 1, "Grapes" = 1, "Bananas" = 0} 

for i=1, #TestTable do 
    if TestTable[i] == 1 then 
     print(TestTable[i]) --> Oranges Grapes 
    end 
end 

不知道这是否合理,但我想打印所有的字符串与1值。

+3

顺便说一句,你的表构造不正确,改变' “苹果”= 0'要么'苹果= 0'或'[ “苹果”] = 0'。 – 2015-02-06 07:14:15

回答

2

除非定义了__len metamethod,#运算符只能用于一个序列,但TestTable不是一个。

您可以使用pairs遍历表:

TestTable = { Apples = 0, Oranges = 1, Grapes = 1, Bananas = 0} 

for k, v in pairs(TestTable) do 
    if v == 1 then 
     print(k) 
    end 
end 
+0

它的工作原理。我很好奇为什么“苹果”,“橙子”等不需要引号? – 2015-02-06 07:25:08

+0

@BenjaminCondrea它是句法糖。参见[PiL](http://www.lua.org/pil/2.5.html)。 – 2015-02-06 07:30:49