我正在使用一些协同程序并尝试使用不是:
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)
答案 0 :(得分:6)
not co == nil
相当于(not co) == nil
。
如果co
为零,则not co
为真,与nil不同。
事实上,not
的结果总是真或假,所以永远不会等于零。
撰写not (co == nil)
或co ~= nil
。