2015-08-05 2 views
1

Я новичок в Lua, и у меня возникла проблема с отображением значений массива.Замыкание элементов в массиве

После googling я пришел к этому, но он печатает только последний элемент в массиве, '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) 
+0

Я думаю, что он хотел напечатать все предметы в конкатенированной w ау. Так что 'text = text .. item' был бы таким, как я предполагаю. – thwiegan

+0

Спасибо за разъяснение, я отредактировал свой ответ. – Snifferdog

+0

да @thwiegan, вы правы, что сработало отлично теперь все, что мне нужно выяснить, это печать запятой и пробелом после каждого элемента, кроме последнего. спасибо, ребята, я приму свой ответ, когда смогу snifferdog –

5

короткий путь, чтобы сделать конкатенацию с запятой также может быть (source):

local items = {'bread', 'shield', 'boots', 'legs', 'armor'} 
conc = table.concat(items, ",") 

William:speak("I am interested in the following: ".. conc) 
Смежные вопросы