Openresty 中的空值:nil,ngx.null,cjson.null

nil lua 的空值

nil 是 lua 语音的空值,不能当做 table 的 value,布尔值为 false

ngx.null

ngx.null 是 openresty 引入的空值,可以当做 table 的 value,布尔值为 true

$ resty -e 'if ngx.null then
ngx.say("true")
end'

cjson.null

cjson.null 是 cjson 库引入的空值,decode 之后可以当做 table 的 value,用来处理 json 的 null,布尔值为 false

$ resty -e 'local cjson = require "cjson"
local data = cjson.encode(nil)
local decode_null = cjson.decode(data)
ngx.say(decode_null == cjson.null)' // true

cdata:NULL

LuaJIT FFI 接口去调用 C 函数,而这个函数返回一个 NULL 指针,cdata:NULL,布尔值为 true

$ resty -e 'local ffi = require "ffi"
local cdata_null = ffi.new("void*", nil)
ngx.say(cdata_null == nil)' // true
点赞
vvv
vvv

o( ̄▽ ̄)d

2020-04-05 16:08:48