Lua中使用另一个模块时出现问题

我想把所有的颜色值都存储在一个名为“colors-rgb.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

这让我出现了错误“Attempt to index local 'colors' (a boolean value)”

我做错了什么?

点赞
用户1442917
用户1442917

你在colors-rgb.lua文件中缺少return {colorsRGB = colorsRGB}。因为你没有返回任何东西,Lua保存了你的模块的执行状态(作为一个布尔值),并将其作为 require调用的结果返回。这就是为什么你会收到有关尝试索引布尔值的错误的原因。

参见《Lua程序设计》第2版的模块和包章节。

2016-06-08 21:31:41
用户6312494
用户6312494

_colors-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
2016-06-11 02:06:56