2011-09-01 22 views
2

我遇到了一個顯示Lua編程語言中數組元素的問題。基本上,我創建了一個包含3個元素的數組,我試圖在corona sdk模擬器的for循環中顯示它的內容。會發生什麼是如果我顯示單個數組元素(沒有循環),他們顯示正常;只要我把它們放在一個for循環,什麼也不顯示在屏幕上了如何在Lua中顯示數組元素?

這是我的代碼:

myText = {"hello", "world", "there"} 

for i = 1, myText do 
    local myText = display.newText(myText[i], 0, 0, native.systemFont, 35) 
end 
+2

難道你的意思是'對i = 1,#myText做'? – lhf

回答

9

當你改變你的循環,這會發生什麼:

for i = 1, #myText do 
    local myText = display.newText(myText[i], 0, 0, native.systemFont, 35) 
end 

或者這樣:

for i, v in ipairs(myText) do 
    local myText = display.newText(v, 0, 0, native.systemFont, 35) 
end 
+0

我錯過了數組前面的#號,該工作非常感謝你的幫助亞歷克斯 – Marius

+0

將它變成一個答案是可能的嗎? –

+0

phresnel,你是什麼意思?這*是一個答案。 – Alex

10

這裏是我寫的,列出一個表中的項目(電暈調用數組作爲「表」)的功能。這是一個類似PHP的print_r的,所以我把它叫做print_r的

你可以稱其爲:

print_r(myTable) 

功能:

function print_r(arr, indentLevel) 
    local str = "" 
    local indentStr = "#" 

    if(indentLevel == nil) then 
     print(print_r(arr, 0)) 
     return 
    end 

    for i = 0, indentLevel do 
     indentStr = indentStr.."\t" 
    end 

    for index,value in pairs(arr) do 
     if type(value) == "table" then 
      str = str..indentStr..index..": \n"..print_r(value, (indentLevel + 1)) 
     else 
      str = str..indentStr..index..": "..value.."\n" 
     end 
    end 
    return str 
end 
+0

先生,我的一天,簡單而優雅! – Valmond