Как правильно сказал Аллистер, ошибка заключается именно в том, что .[
. Но я хочу кое-что добавить: точечная запись и скобка могут сделать то же самое, но это не всегда так.
Я хотел бы добавить, что скобочная запись позволяет вам использовать переменные для ссылок на поля. Например, если у вас есть следующий фрагмент:
local function getComponent(color, component)
return color[component]
end
local c = {
cyan = 0,
magenta = 11,
yellow = 99,
black = 0
}
print(getComponent(c, "yellow"))
Вы просто не можете сделать это, используя точечную запись. Следующее всегда будет возвращать nil
:
local function getComponent(color, component)
return color.component
end
Это потому, что он будет искать поле с именем component
в color
(которое не существует в этой модели).
Итак, в основном я хочу подчеркнуть, что, если вы знаете поле, точечная запись в порядке, но, если она может варьироваться, используйте скобки.