Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何优雅地尝试在Lua中加载包?_Lua_Packages - Fatal编程技术网

如何优雅地尝试在Lua中加载包?

如何优雅地尝试在Lua中加载包?,lua,packages,Lua,Packages,我想尝试在Lua中加载一个包。 该软件包是ansicolors,只是为了有一个外观更好的控制台输出 这是sugar,我不希望用户被迫安装此软件包 所以我试着这样做: ansicolors = require 'ansicolors' or nil 但正如我所想,它会引发一个modulenotfound错误并停止执行 因此,我的问题是:是否有一种优雅的解决方案,可以在不可能的情况下尝试加载包并回退到更简单的解决方案?很抱歉,我的答案的第一个版本不正确-pcall将模块作为其第二个值返回。请看我的

我想尝试在Lua中加载一个包。 该软件包是ansicolors,只是为了有一个外观更好的控制台输出

这是sugar,我不希望用户被迫安装此软件包

所以我试着这样做:

ansicolors = require 'ansicolors' or nil
但正如我所想,它会引发一个modulenotfound错误并停止执行


因此,我的问题是:是否有一种优雅的解决方案,可以在不可能的情况下尝试加载包并回退到更简单的解决方案?

很抱歉,我的答案的第一个版本不正确-pcall将模块作为其第二个值返回。请看我的最新答案。没关系,我看了文档。即使他们是一个小错误的例子,这是我正在寻找的。谢谢为什么有第二条线?只需使用:
local has\u colors,ansicolors=pcall(需要“ansicolors”)
@daurnimator-因为OP只想在一个变量中获得“module\u value或nil”。为同一功能使用两个变量有点多余。
local status, module = pcall(require, 'ansicolors')
ansicolors = status and module or nil