当成员数量在 运行 之前未知时,如何使用 Lua 向 Redis 集提供多个成员?
How do I provide multiple members to a Redis set using Lua when number of members is unknown until run-time?
例如,可以使用 sadd
命令向 Redis 中的某些 set 添加多个成员:
sadd myset 38 484 2 92 1
在Lua中,我发现我可以执行如下相同的操作:
redis.call("SADD", "myset", "38", "484", "2", "92", "1")
但是,如果调用者不知道要向 sadd
提供多少参数,会发生什么情况?
在 JavaScript 中,有 Function.apply(...)
函数可以按数组的顺序提供参数:
// Source function would look like this: function X(a, b, c) { ... }
X.apply(this, [38, 484, 2]);
如何在 Lua 和 Redis 中实现相同的目标?
您可以使用 unpack 创建类似的功能来应用:
function apply(f, args) f(unpack(args)) end
function X(a, b, c) print(a, b, c) end
apply(X, {38, 484, 2})
或者干脆直接解压:
X(unpack{38, 484, 2})
例如,可以使用 sadd
命令向 Redis 中的某些 set 添加多个成员:
sadd myset 38 484 2 92 1
在Lua中,我发现我可以执行如下相同的操作:
redis.call("SADD", "myset", "38", "484", "2", "92", "1")
但是,如果调用者不知道要向 sadd
提供多少参数,会发生什么情况?
在 JavaScript 中,有 Function.apply(...)
函数可以按数组的顺序提供参数:
// Source function would look like this: function X(a, b, c) { ... }
X.apply(this, [38, 484, 2]);
如何在 Lua 和 Redis 中实现相同的目标?
您可以使用 unpack 创建类似的功能来应用:
function apply(f, args) f(unpack(args)) end
function X(a, b, c) print(a, b, c) end
apply(X, {38, 484, 2})
或者干脆直接解压:
X(unpack{38, 484, 2})