我想尝试在Lua中加载一个包。 包是ansicolors
,只是有一个更好看的控制台输出。如何优雅地尝试在Lua中加载软件包?
这是糖,我不希望用户被迫安装这个软件包。
所以我tryed是这样的:
ansicolors = require 'ansicolors' or nil
但因为我认为,它提高一个模块没有发现错误并停止执行。
所以我的问题是:是否有一个优雅的解决方案,试图加载包和回退简单的解决方案时,它是不可能的?
我想尝试在Lua中加载一个包。 包是ansicolors
,只是有一个更好看的控制台输出。如何优雅地尝试在Lua中加载软件包?
这是糖,我不希望用户被迫安装这个软件包。
所以我tryed是这样的:
ansicolors = require 'ansicolors' or nil
但因为我认为,它提高一个模块没有发现错误并停止执行。
所以我的问题是:是否有一个优雅的解决方案,试图加载包和回退简单的解决方案时,它是不可能的?
local status, module = pcall(require, 'ansicolors')
ansicolors = status and module or nil
为什么有第二行?只需使用:'local has_colors,ansicolors = pcall(require,“ansicolors”)' – daurnimator 2013-03-03 04:39:30
@daurnimator - 因为OP想要在一个变量中获得“module_value或nil”。为相同的功能使用两个变量有点冗余。 – 2013-03-03 06:24:38
对不起,我的答案的第一个版本不正确 - pcall返回模块作为其第二个值。请看我更新的答案。 – 2013-03-01 13:20:19
没关系,我查看了文档。即使他们在例证中出现了一点小错误,我也一直在寻找。谢谢 – 2013-03-01 13:43:28