当成员数量在 运行 之前未知时,如何使用 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})