在 Redis 上将 Nil 参数传递给 Lua 脚本?

Eli*_*Eli 5 lua redis

我有一个 lua redis 脚本,我想在 ARGV 中向其传递一些 nil 参数。我认为以下内容会起作用:

redis-cli EVAL "$(cat some_script.lua)" 3 key1 key2 key 3 nil nil 4
Run Code Online (Sandbox Code Playgroud)

在这种情况下,我期望 ARGV[1] = ARGV[2] = nil。相反,它们似乎被设置为'nil'lua 内部的(字符串),所以当我执行以下操作时:

if ARGV[1] then return ARGV[1] end
Run Code Online (Sandbox Code Playgroud)

我会'nil'回到我身边。

我如何正确地将 nils 传递给 Lua?

Yu *_*Hao 4

不,命令行参数将始终是 a string,即使您传递如下参数:

lua script.lua "test argument" "" "end"
Run Code Online (Sandbox Code Playgroud)

你仍然会得到

argv[1] = "test argument"
argv[2] = ""   --empty string
argv[3] = "end"
Run Code Online (Sandbox Code Playgroud)

在本例中, argv[4] = nil,但我认为这不是您想要的,因为程序期望最后有一个非零参数。

nil那么为什么不在脚本中设置一些标志字符串来代表,例如,使用字符串“nil”作为标志,这样您就可以在脚本中进行测试:

if argv[1] ~= "nil" then return argv[1] end
Run Code Online (Sandbox Code Playgroud)