【问题标题】:How do I display array elements in Lua?如何在 Lua 中显示数组元素?
【发布时间】:2018-05-01 13:09:39
【问题描述】:

我在用 Lua 编程语言显示数组元素时遇到问题。基本上,我创建了一个包含 3 个元素的数组,并且我试图在 corona sdk 模拟器上的 for 循环中显示它的内容。发生的情况是,如果我显示单个数组元素(没有循环),它们显示得很好;一旦我将它们放入 for 循环中,屏幕上就不再显示任何内容了

这是我的代码:

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

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

【问题讨论】:

  • 你不是说for i = 1, #myText do吗?

标签: sdk lua coronasdk


【解决方案1】:

这是我编写的一个函数,用于列出表中的项目(corona 将数组称为“表”)。它类似于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

【讨论】:

  • 这位先生让我的一天变得简单而优雅!
  • 我正忙着调试多人版饥荒的模组:每当我敢尝试连接诸如“布尔”之类的东西时,那里的 LUA 解释器都会发出嘶嘶声, “userdata”等(就像 print_r-ing 各种有趣的表时发生的那样)。有没有简单的方法来修改上述功能?我必须为每种可能的类型编写案例吗?
【解决方案2】:

当您将循环更改为这样时会发生什么:

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

【讨论】:

  • 我错过了数组前面的 # 符号,非常感谢您的帮助 Alex
  • 能否将其转化为答案?
  • phresnel,你是什么意思?这答案。
【解决方案3】:

为什么不在“table.concat”函数中打印表格?

myText = {"hello", "world", "there"}
print(table.concat(myText,", "))

你好,世界,那里

【讨论】:

    猜你喜欢
    • 2020-04-07
    • 2015-09-09
    • 2017-02-09
    • 2021-08-14
    • 2019-08-27
    • 1970-01-01
    • 2021-11-12
    • 2019-08-22
    • 1970-01-01
    相关资源
    最近更新 更多