我有这样一个匿名的Lua函数:
an_func = function(x) return x == nil end
Run Code Online (Sandbox Code Playgroud)
我需要在4个值的表格上测试它:{'None', nil, 1, '1'}.所以,我写了以下代码:
for num, element in pairs({'None', nil, 1, '1'}) do
print(num .. ': ' .. tostring(an_func(element)))
end
Run Code Online (Sandbox Code Playgroud)
当我运行它时,我只有三行:
1: false
3: false
4: false
Run Code Online (Sandbox Code Playgroud)
具有true值的行(对应于nil表元素)未打印.
你能解释一下,为什么Lua打印所有结果,但是true?如何修复剪切使其输出所有4行?
PS我是Lua的新人.
小智 5
当使用pairs()时,它会遍历表的所有元素.零意味着什么,所以不会去在它.它为什么要告诉你桌上什么都没有?如果你有一个全新的表,如果你用任何东西索引它,它将返回nil. print(({}).test) --> nil
如果你真的想得到零,你可以使用虚拟值:
local NIL = setmetatable({},{__tostring=function() return "nil" end})
an_func = function(x) return x == NIL end
for num, element in pairs({'None', NIL, 1, '1'}) do
print(num .. ': ' .. tostring(an_func(element)))
end
Run Code Online (Sandbox Code Playgroud)
输出:
1: false
2: true
3: false
4: false
Run Code Online (Sandbox Code Playgroud)