如何在Lua中将一个函数传递给另一个函数?
我是Lua的初学者,我想为我的nvim配置如何在Lua中将一个函数传递给另一个函数?,lua,nvim,Lua,Nvim,我是Lua的初学者,我想为我的nvim配置init.Lua。我试图将一个函数(从init.lua)作为参数传递给另一个函数(到nerdTree.lua),并在nerdTree.lua 我认为这应该行得通,但我犯了一个错误: /.config/nvim/init.lua:26: attempt to call a boolean value 为什么呢?我做错了什么 Myinit.lua 本地函数加载\插件() 本地使用=需要('packer')。使用 要求(“打包机”)启动( { 函数() 使用
init.Lua
。我试图将一个函数(从init.lua
)作为参数传递给另一个函数(到nerdTree.lua
),并在nerdTree.lua
我认为这应该行得通,但我犯了一个错误:
/.config/nvim/init.lua:26: attempt to call a boolean value
为什么呢?我做错了什么
Myinit.lua
本地函数加载\插件()
本地使用=需要('packer')。使用
要求(“打包机”)启动(
{
函数()
使用“wbthomason/packer.nvim”
使用“neovim/nvim lspconfig”
使用“glepnir/lspsaga.nvim”
使用“nvim lua/完成nvim”
使用“nvim treesitter/nvim treesitter”
使用“joshdick/onedark.vim”
使用“itchyny/lightline.vim”
使用“Ryanasis/vim设备”
require('nerdTree')(use)//兴趣点
完,,
config={package_root='/tmp/nvim/site/pack'}
}
)
结束
我的nerdTree.lua
功能加载(使用)
使用“preservim/nerdtree”
结束
之所以会出现此错误,是因为您只能调用函数值或实现了\u调用的
元方法的值
考虑到你的实施
function load(use)
use "preservim/nerdtree"
end
require(“nerdTree”)
将返回nil
nvim可能会将其转换为布尔值,否则您将在尝试调用nil值时遇到错误。但这只是一个猜测,因为我知道一些值被转换为各自的VimL类型。另一个可能的原因是已经有了另一个nerdtree模块,您并没有加载您的模块,而是加载一个返回布尔值的模块。你很快就会知道的
如果要调用所需的内容,则模块需要返回一个可调用的值
但由于您的模块定义了一个全局函数,您可以简单地执行以下操作:
require("nerdTree")
load(use)
或者将您的模块更改为
local function load(use)
use "preservim/nerdtree"
end
return load
然后
require(“nerdTree”)(use)
应该可以用了。回答得很好。我想现在我明白了为什么lua开发人员使用localobj={}
并为其分配方法并将其导出。全局函数对分离非常不利。是将其转换为布尔值还是需要错误的模块?