在下面的Lua代码中:
function eq_event(op1, op2)
if op1 == op2 then
return true
end
local h = getequalhandler(op1, op2)
if h then
return not not h(op1, op2)
else
return false
end
end
为什么在返回值之前使用not not
?与原始退货价值有什么不同?我还记得在C中,还有机会在某个表达式之前使用!!
,它们是否相同?
答案 0 :(得分:3)
not not
会将nil转换为false,并将除false
以外的所有其他值转换为true
。只有在与C交互时才需要返回布尔值。
是的,它与C中的!!
相同。唯一不同的是,在C中,0(以及其他一些我不记得的值)也是假的(也就是说,当加倍时它们会返回false “D)。