2016-06-08 5 views
2

Я хотел бы сохранить все мои значения цвета в отдельном файле под названием «colors-rgb.lua», а затем просто захватить их по имени, когда они мне понадобятся. Основная структура этого файла:Проблема с использованием другого модуля в Lua

colorsRGB = { 
    aliceblue = {240, 248, 255}, 
    antiquewhite = {250, 235, 215}, 
    aqua = { 0, 255, 255}, 
    aquamarine = {127, 255, 212}, 
    azure = {240, 255, 255}, 
    beige = {245, 245, 220}, 
    bisque = {255, 228, 196}, 
    black = { 0, 0, 0}, 
    ... 
} 

В моей main.lua, я

local colors = require("colors-rgb") 
local blue = colors.colorsRGB.aliceblue 

Который дает мне ошибку «Попытка индексировать местных„цветов“(булево значение)»

Что я делаю неправильно?

ответ

1

Вам не хватает return {colorsRGB = colorsRGB} в вашем файле colors-rgb.lua. Поскольку вы ничего не вернули, Lua сохранил статус выполнения вашего модуля (в виде логического значения) и вернул его в результате вызова require. Вот почему вы получаете ошибку о попытке индексировать логическое значение.

См Modules and Packages главу из программирования в Lua 2.

+0

В этом случае также можно получить доступ к таблице, но она называется colorsRGB, поскольку она была объявлена ​​глобальной. Он должен объявить его локальным, а затем вернуть его из модуля. – user6245072

+0

Право; хотя намерение явно получить к нему доступ в результате «требования». –

0

цветов-rgb.lua должна возвращать значение.

local colorsRGB = { 
    aliceblue = {240, 248, 255}, 
    antiquewhite = {250, 235, 215}, 
    aqua = { 0, 255, 255}, 
    aquamarine = {127, 255, 212}, 
    azure = {240, 255, 255}, 
    beige = {245, 245, 220}, 
    bisque = {255, 228, 196}, 
    black = { 0, 0, 0}, 
} 
return colorsRGB