我正在使用一些协程并尝试使用 not 恢复一个协程:
if not co == nil then `resume end
协程不会恢复。虽然 co 是零。真是莫名其妙。
所以我最终尝试了
if co then `resume end
成功了!
为什么不是 (nil == nil),当 co 为 nil 时逻辑上为假,而当它不是时为真,这与 nil 不同,后者在 co 为 nil 时逻辑上为假,否则为真?
我并不总是使用否定逻辑表达式,但现在我担心我的某些代码可能有问题。也许这只对协程有问题? (而且我 100% 确定该值为 nil,因为这就是打印出来的内容,除非 nil 不再等于 nil)
最佳答案
not co == nil
等同于 (not co) == nil
因为 operator precedence .
如果 co
为 nil,则 not co
为真且不同于 nil。
事实上,not
的结果总是 true 或 false,因此永远不会等于 nil。
写 not (co == nil)
或 co ~= nil
。
关于Lua not not 和 not not 不一样,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44628944/