Lua并非不一样

时间:2017-06-19 11:07:20

标签: lua

我正在使用一些协同程序并尝试使用不是:

if not co == nil then `resume end

并且协程不会恢复。虽然co是零。这令人费解。

所以我最终尝试了

if co then `resume end

它有效!

为什么不是(nil == nil),当co为nil时,逻辑上为false;如果不为n,则为n,而当n为n时为逻辑假,则为nil,否则为true ?

我并不总是使用否定逻辑表达式,但现在我担心我的某些代码可能是错误的。也许这只与协同程序有问题? (并且我100%确定该值为零,因为这是打印出来的,除非nil不再等于nil)

1 个答案:

答案 0 :(得分:6)

由于operator precedence

not co == nil相当于(not co) == nil

如果co为零,则not co为真,与nil不同。

事实上,not的结果总是真或假,所以永远不会等于零。

撰写not (co == nil)co ~= nil