gpt4 book ai didi

node.js - 如何在redis\lua中定义函数?

转载 作者:IT王子 更新时间:2023-10-29 06:00:34 24 4
gpt4 key购买 nike

我正在使用 Node.js 和“redis-scripto”模块,我正在尝试在 Lua 中定义一个函数:

 var redis = require("redis");  
var redisClient = redis.createClient("6379","127.0.0.1");

var Scripto = require('redis-scripto');
var scriptManager = new Scripto(redisClient);
var scripts = {'add_script':'function add(i,j) return (i+j) end add(i,j)'};

scriptManager.load(scripts);
scriptManager.run('add_script', [], [1,1], function(err, result){
console.log(err || result);
});

所以我得到了这个错误:

[Error: ERR Error running script (call to .... @enable_strict_lua:7: user_script:1: Script attempted to create global variable 'add']

所以我发现它是一种保护,as explained in this thread :

scriptingEnableGlobalsProtection 的文档字符串表明其目的是通知脚本作者常见错误(不使用本地)。”

但我还是不明白 - 这个 scripting.c 在哪里?改变全局表的解决方案对我来说似乎有风险。

是否没有使用 lua 为 redis 设置函数的简单方法?

最佳答案

看起来脚本运行器正在函数中运行您的代码。因此,当您创建 function add() 时,它认为您无意中在函数内部执行此操作。它也可能与调用 add(i,j) 的参数有类似的问题。如果这是正确的,那么这应该有效:

local function add(i,j) return (i+j) end return add(1,1)

如果可行,那么希望这也适用于从 js 传递的参数:

local function add(i,j) return (i+j) end return add(...)

关于node.js - 如何在redis\lua中定义函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21254998/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com