Зацикливание элементов в массиве
Я новичок в Lua, и у меня проблема с распечаткой значений массива.
После поиска в Google я пришел к этому, но он печатает только последний элемент в массиве, 'armor'
, Что я делаю неправильно? Кроме того, как я могу добавить запятую после каждого элемента?
local items = {'bread', 'shield', 'boots', 'legs', 'armor'}
for i, item in ipairs(items) do
text = item
end
William:Speak("I am interested in the following: ".. text)
2 ответа
Решение
Вы печатаете после того, как текст настроен на хлеб, щит, сапоги, ноги, а затем броню. Вот почему вы видите только "броню". Вы выполняете итерацию правильно, но если вы хотите перечислить все из них, сделайте это...
local items = {'bread', 'shield', 'boots', 'legs', 'armor'}
for i, item in ipairs(items) do
text = item
William:speak("I am interested in the following: ".. text)
end
Это заставляет его говорить каждый раз, когда вы проходите через цикл.
Если вы хотите, чтобы они были в одной строке, попробуйте это...
local items = {'bread', 'shield', 'boots', 'legs', 'armor'}
for i, item in ipairs(items) do
text = text .. item
end
William:speak("I am interested in the following: ".. text)
Я не проверял это, но это может решить вашу проблему
local items = {'bread', 'shield', 'boots', 'legs', 'armor'}
for i, item in ipairs(items) do
if item == items.length - 1 then
text = text .. item
else
text = text .. item .. ", "
end
end
William:speak("I am interested in the following: ".. text)
Более короткий способ сделать конкатенацию с запятой также может быть ( источник):
local items = {'bread', 'shield', 'boots', 'legs', 'armor'}
conc = table.concat(items, ",")
William:speak("I am interested in the following: ".. conc)