在运行时之前成员数未知的情况下,如何使用Lua为Redis集提供多个成员?

在运行时之前成员数未知的情况下,如何使用Lua为Redis集提供多个成员?,lua,redis,set,arguments,Lua,Redis,Set,Arguments,例如,可以通过以下方式使用sadd命令向Redis中的某些集合添加多个成员: sadd myset 38 484 2 92 1 在Lua中,我发现我可以执行如下相同的操作: redis.call("SADD", "myset", "38", "484", "2", "92", "1") 但是,当调用方不知道将向sadd提供多少参数时,会发生什么情况 在JavaScript中,有一个函数.apply(…)函数,该函数允许以数组的顺序提供参数: // Source function would

例如,可以通过以下方式使用
sadd
命令向Redis中的某些集合添加多个成员:

sadd myset 38 484 2 92 1
在Lua中,我发现我可以执行如下相同的操作:

redis.call("SADD", "myset", "38", "484", "2", "92", "1")
但是,当调用方不知道将向
sadd
提供多少参数时,会发生什么情况

在JavaScript中,有一个
函数.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})

@我恳求你!!!!!IIRC@notifying-people不起作用,除非他们已经在conversation@ColonelThirtyTwo哈哈哈,但是马克是一个聪明的人和伊萨隆。他能够被通知只是因为你认为他会被通知!!!!!!我要走这条路。。。我还在网上找到了关于
解包的东西。现在我需要让我的代码正常工作哦耶!我终于让它工作了,很明显,它使用了
解包
。我有额外的工作,因为我正在将成员添加到一个已排序的集合中,并且我需要动态创建一个Lua表,将分数添加到要添加的成员中。。。