条件不正确地评估(Lua 4)

我正在尝试在 Lua 4 中使用以下函数:

function ternary(cond, T, F)
    if cond then return T else return F end
end

在此上下文中:

loadHW1 = false
print(ternary(loadHW1 == true, "这应该不会出现", nil))

但是,当我期望的结果是 nil 时,文本总是会被打印出来。我做错了什么?谢谢。

[ed]

我切换到以下代码但依然得到“这是真的”结果:

loadHW1 = 0
print(ternary(loadHW1, "这是真的", "这是假的"))
点赞
用户107090
用户107090

在Lua 4中,没有布尔值:它们在Lua 5中被引入。

在Lua 4中,只有nil为false;任何其他值,包括0,都为true。

在你的代码中,falsetrue被解释为未定义的全局变量,因此两者都被求值为nil。因此,loadHW1 == true变成了nil == nil,这是true,因此cond接收了1。

如果你想在Lua 4中使用falsetrue,请定义它们如下:

false = nil
true = 1
2020-08-04 20:13:01