当成员数量在运行时未知时,如何使用 Lua 向 Redis 集提供多个成员?

Mat*_*zer 5 lua arguments set redis

例如,可以使用以下命令将多个成员添加到Redis 中的某个集合sadd

sadd myset 38 484 2 92 1
Run Code Online (Sandbox Code Playgroud)

在 Lua 中,我发现我可以执行如下相同的操作:

redis.call("SADD", "myset", "38", "484", "2", "92", "1")
Run Code Online (Sandbox Code Playgroud)

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

在 JavaScript 中,有一个Function.apply(...)函数可以让我们以数组的形式提供参数:

 // Source function would look like this: function X(a, b, c) { ... }
 X.apply(this, [38, 484, 2]);
Run Code Online (Sandbox Code Playgroud)

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

rya*_*son 2

您可以使用 unpack 创建类似的功能来应用:

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

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

  apply(X, {38, 484, 2})
Run Code Online (Sandbox Code Playgroud)

或者直接解压:

  X(unpack{38, 484, 2})
Run Code Online (Sandbox Code Playgroud)