Lua并非不一样

2 lua

我正在使用一些协同程序,并试图恢复使用不是:

if not co == nil then `resume end
Run Code Online (Sandbox Code Playgroud)

协程不会恢复.虽然co是零.令人费解的是.

所以我最终尝试了

if co then `resume end
Run Code Online (Sandbox Code Playgroud)

它工作了!

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

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

lhf*_*lhf 6

not co == nil等同于(not co) == nil因为运算符优先级.

如果co是零,not co则为真,因此与nil不同.

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

not (co == nil)co ~= nil.

  • @AbstractDissonance为什么不应该那样?这就像是说意大利人说的东西很奇怪而且不应该那样,只因为你不懂意大利语语法...... (5认同)