1

在以下 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 中,也有机会使用!!before 一些表达式,它们是否相同?

4

1 回答 1

3

not not会将 nil 转换为 false,以及除falseto之外的所有其他值true。只有在与 C 交互时,您可能需要返回一个布尔值。

是的,它与 C 中的相同!!。唯一的区别是在 C 中,0(以及我不记得的一些其他值)也是虚假的(也就是说,当加倍 not'd 时它们将返回 false)。

于 2012-08-04T05:55:52.427 回答