【问题标题】:How do I get all entries in a table and put them into a string?如何获取表格中的所有条目并将它们放入字符串中?
【发布时间】:2022-01-22 23:55:24
【问题描述】:

我正在开发一个 ROBLOX 项目,并且我正在努力做到这一点,以便当玩家触摸砖块(我们会说……终点线!)时,它会将他们添加到名为获胜者的表格中。

如何获取winners 中的每个条目,用逗号分隔它们(除了最后一个,看起来像:test, test2, test3,,看起来很奇怪),然后将它们放入一个完整的字符串中以进入ReplicatedStorage 中的字符串值。

这是我目前所拥有的:

...
local winners = {}
...

for _, winner in pairs(winners) do
    winnersVariable.Value = ???
end

总结:假设我有一张桌子(获胜者),里面有 3 个对象(它们是字符串 - {"test1","test2","test3"})。我想提取所有字符串,用逗号分隔/加入它们,然后将它们放入一个完整的字符串中(例如:test1, test2, test3

我该怎么做?

【问题讨论】:

  • table.concat({"test1","test2","test3"},",")

标签: lua roblox


【解决方案1】:

您可以使用循环手动完成:

local winners = {"Bob", "Jim", "Susanne", "John"}
local winnerList
for _, name in ipairs(winners) do
  winnerList = winnerList and winnerList .. ", " .. name or name
end
print(winnerList)

或者你直接使用 Lua 的table.concat

print(table.concat(winners, ", "))

【讨论】:

    【解决方案2】:

    Lua 中的表能够为其键/值对保存几乎所有数据类型。

    因此答案只能是:使用pairs()ipairs()
    显示/定位它们。

    对于数据类型为数字且按顺序排列的表键(在 Lua 中,从索引键 1 开始)table library functions 很有用。
    但有他们的限制。
    例如table.concat() 只能处理数据类型字符串或数字的值。

    处理这种表的最简单方法是老式...

    local winners = {"Bob", "Jim", "Susanne", "John"} -- 4 key/value pairs in sequence
    winners.list = table.concat(winners, ", ") -- @lhf & @Piglet' string example
    
    -- This loop only takes care about numbered keys in sequence
    -- Therefore winners.list is not handled here
    for i = 1, #winners do -- #winners equals to 4
     print(i, winners[i]) -- do something with it
    end
    

    【讨论】:

    • 再看看 concat() 的范围参数 - 在上面的示例中,使用标准范围并且与范围参数相同,其中:table.concat(winners, ', ', 1, #winners) - 只有前三个是:table.concat(winners, ', ', 1, 3) - 等等;-)
    猜你喜欢
    • 1970-01-01
    • 2020-03-29
    • 1970-01-01
    • 2020-07-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多