Lua not not 和 not not 不一样

标签 lua

我正在使用一些协程并尝试使用 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/

相关文章:

c++ - 为什么在调用 luaL_error 时不调用 c++ 对象析构函数?

c - Lua 在 C 中共享 upvalue 示例

utf-8 - 如何在lua中将UTF8字节数组转换为字符串

c++ - 从 C++ 调用未知(按名称)lua 函数

lua - 您如何正确使用带有 lua 的管道来获取程序的输出?

android - Corona 构建的 apk 无法安装在三星 Galaxy S2 上

lua - 如何使用Nodemcu(Lua)进行多个串口通信

numpy - Lua Torch 相当于 np.where()?

variables - 模式匹配中的lua变量

LuaJIT 能比 C 更快吗?