2015-05-15 3 views
2

Возможно ли для меня циклически выполнять эту таблицу без проверки состояния? Я хотел бы иметь возможность сделать что-то colors[count % 6] или подобное, где мне не нужно явно указывать, в каком состоянии (счет) я нахожусь.Получить значение по индексу в таблице

colors = { 
     red = {max.R,0,0}, 
     green = {0,max.G,0}, 
     blue = {0,0,max.B}, 
     purple = {max.R,0,max.B}, 
     pink = {max.R,0.1*max.G,0.8*max.B}, 
     yellow = {max.R*0.95,max.G*0.64,0.5*max.B} 
     } 

У меня есть обратный вызов таймера, где я хочу, чтобы пройти через стол одного цвета в то время, но сделать это в настоящее время я должен сделать это, как if count == 0 then setColor(colors.red) ...

+0

yes По существу – chris

+0

У меня есть обратный вызов по таймеру, где я хочу пройти через один цвет за один раз, но для этого мне нужно сделать это, как 'if count == 0, тогда setColor (colors.red) ... ' – chris

ответ

3

Один из способов заключается в использовании другой таблицы индекса :

local index = {"red", "green", "blue", "purple", "pink", "yellow"} 

Тогда вы можете использовать colors[index[count % 6 + 1]]. Недостатком является то, что если ключи colors изменены, index необходимо обновить вручную.

+0

вот хорошее решение, спасибо. – chris

+1

Вы можете заполнить таблицу 'index' на основе таблицы' colors': 'для цвета в парах (цветах) сделать table.insert (index, color) end'. –

+1

@PaulKulchenko Если порядок ключей не имеет значения, обязательно. Однако, если порядок имеет значение, то использование «пар» не является хорошей идеей. –

Смежные вопросы