如何在运行时数量不确定的情况下,使用Lua向Redis集提供多个成员?

例如,可以使用 sadd 命令将多个成员添加到 Redis 中的某个 _set_。如下所示:

sadd myset 38 484 2 92 1

在 Lua 中,我发现可以通过以下方式执行相同的操作:

redis.call("SADD", "myset", "38", "484", "2", "92", "1")

但是,当调用者不知道将提供多少参数给 sadd 时会发生什么?

在 JavaScript 中,有 Function.apply(...) 函数,它允许将参数按顺序作为数组提供:

// 源函数将如此:function X(a, b, c) { ... }
X.apply(this, [38, 484, 2]);

我如何在 Lua 和 Redis 中实现相同的目标?

点赞
用户2726734
用户2726734

你可以使用unpack来创建与apply相似的功能:

  function apply(f, args) f(unpack(args)) end

  function X(a, b, c) print(a, b, c) end

  apply(X, {38, 484, 2})

或者直接使用unpack:

  X(unpack{38, 484, 2})
2015-03-02 11:29:57