我曾试图在声明函数时未使用local关键字,然后从另一个脚本中调用该函数,但在运行命令时出现错误。
test = function ()
return 'test'
end
# from some other script
test()
编辑:
我简直不敢相信我还没有得到答案。我将包含更多关于我的设置的细节。
我正在使用Node,并使用redis-scripto包将脚本加载到redis中。这里是一个例子。
var Scripto = require('redis-scripto');
var scriptManager = new Scripto(redis);
scriptManager.loadFromDir('./lua_scripts');
var keys = [key1, key2];
var values = [val];
scriptManager.run('run_function', keys, values, function(err, result) {
console.log(err, result)
})
还有Lua脚本。
-- ./lua_scripts/dict_2_bulk.lua
-- turns a dictionary table into a bulk reply table
dict2bulk = function (dict)
local result = {}
for k, v in pairs(dict) do
table.insert(result, k)
table.insert(result, v)
end
return result
end
-- run_function.lua
return dict2bulk({ test=1 })
抛出以下错误。
[Error: ERR Error running script (call to f_d06f7fd783cc537d535ec59228a18f70fccde663): @enable_strict_lua:14: user_script:1: Script attempted to access unexisting global variable 'dict2bulk' ] undefined