为什么要使用`not not`操作?

时间:2012-08-04 05:51:07

标签: lua

在下面的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中,还有机会在某个表达式之前使用!!,它们是否相同?

1 个答案:

答案 0 :(得分:3)

not not会将nil转换为false,并将除false以外的所有其他值转换为true。只有在与C交互时才需要返回布尔值。

是的,它与C中的!!相同。唯一不同的是,在C中,0(以及其他一些我不记得的值)也是假的(也就是说,当加倍时它们会返回false “D)。