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