为什么 Lua 中的 == 表现如此?

古拉夫·达斯

在 Lua 解释器中,当我们输入:

>print(1=="1") 
 false 

好的!

>print(false==true) 
 false

好的!

>print(string==math) 
 false

好的,但为什么?

>print(function==nil) 
 stdin:1: '(' expected near '=='

我不明白 == 和 ~= 的工作原理。请解释

小猪
print(function==nil) 

给你错误信息:

stdin:1: '(' 预期在 '==' 附近

因为function是用于定义函数变量的关键字。该关键字预计会在特定语法中使用。function本身不是有效的 Lua 表达式,因此不能用作一个表达式。Lua 告诉你你写了一些它无法解释的东西,它通常会期望function后面跟着(.

请阅读https://www.lua.org/manual/5.3/manual.html#3.4.11https://www.lua.org/manual/5.3/manual.html#3.4https://www。 lua.org/manual/5.3/manual.html#3.4.5

和其他任何东西:)

string 和 math 都是 Lua 标准库。string 和 math 是两个不同的 Lua 表。因此它们不能相同,因此表达式 string == math 为假。

https://www.lua.org/manual/5.3/manual.html#3.4

Lua 中的基本表达式如下:

exp ::= 前缀exp

exp ::= nil | 假| 真的

exp ::= 数字

exp ::= 文字字符串

exp ::= 函数定义

exp ::= 表构造函数

exp ::= '...'

exp :: = exp binop exp

exp ::= unop exp

前缀表达式 ::= var | 函数调用 | '('exp')'

如您所见,只有 Lua 关键字 nil、false 和 true 本身就是表达式。其他关键字不是。

math 和 string 根本不是 Lua 关键字。它们是表类型的变量。变量也是表达式。这就是为什么你不会收到错误的原因math == string

阅读 Lua 的参考手册和在 Lua 中编程可以最好地回答此类问题。

https://www.lua.org/docs.html

我并不是说在开始之前你应该知道里面的一切。但是了解最基本的知识将大大加快您的学习体验和理解!

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么 Lua 中的 print() 表现得像这样?

来自分类Dev

为什么 multiprocessing.Pool 和 multiprocessing.Process 在 Linux 中的表现如此不同

来自分类Dev

与 10.04 64 位相比,为什么 Flash 在 10.10 64 位中的表现如此糟糕?

来自分类Dev

为什么在引发StackOverflowException时.NET表现如此差?

来自分类Dev

为什么set()在Python中表现得如此直观?

来自分类Dev

为什么长度在Lua中不同

来自分类Dev

为什么长度在Lua中不同

来自分类Dev

是Interlocked.Increment()在VisualBasic.Net中的表现如此出色

来自分类Dev

为什么使用Europarl的摩西会有如此糟糕的表现?

来自分类Dev

为什么惰性val在枚举中表现得如此神秘,Scala?

来自分类Dev

React中的派生状态是什么,为什么如此重要?

来自分类Dev

解释为什么unpack()在Lua中返回不同的结果

来自分类Dev

为什么在lua中运行'setfallback'会给出错误

来自分类Dev

为什么Math.max在Java中如此昂贵?

来自分类Dev

为什么Haskell(GHC)中的多态性如此昂贵?

来自分类Dev

为什么在Scala Option中如此创建单个元素列表?

来自分类Dev

为什么在c中以如此奇怪的顺序执行代码?

来自分类Dev

调用方法的顺序-在此示例中为什么如此重要?

来自分类Dev

为什么安装程序中的命令如此困难?

来自分类Dev

为什么在TestNG中此测试的执行顺序如此?

来自分类Dev

为什么堆栈和堆在内存中如此分离?

来自分类Dev

为什么在Rust中堆栈值相差如此远?

来自分类Dev

为什么YouTube的缓冲/加载行为在Chrome中如此可怕?

来自分类Dev

为什么在Debian中设置WLAN如此困难?(与Ubuntu相比)

来自分类Dev

与Linux相比,为什么Windows中的搜索如此缓慢?

来自分类Dev

为什么 tf.transpose 在 RNN 中如此重要?

来自分类Dev

为什么`==`在zsh和bash中的[[...]`内部表现不同?

来自分类Dev

在MSI中,LUA是什么?

来自分类Dev

Lua中for ...的含义是什么?

Related 相关文章

  1. 1

    为什么 Lua 中的 print() 表现得像这样?

  2. 2

    为什么 multiprocessing.Pool 和 multiprocessing.Process 在 Linux 中的表现如此不同

  3. 3

    与 10.04 64 位相比,为什么 Flash 在 10.10 64 位中的表现如此糟糕?

  4. 4

    为什么在引发StackOverflowException时.NET表现如此差?

  5. 5

    为什么set()在Python中表现得如此直观?

  6. 6

    为什么长度在Lua中不同

  7. 7

    为什么长度在Lua中不同

  8. 8

    是Interlocked.Increment()在VisualBasic.Net中的表现如此出色

  9. 9

    为什么使用Europarl的摩西会有如此糟糕的表现?

  10. 10

    为什么惰性val在枚举中表现得如此神秘,Scala?

  11. 11

    React中的派生状态是什么,为什么如此重要?

  12. 12

    解释为什么unpack()在Lua中返回不同的结果

  13. 13

    为什么在lua中运行'setfallback'会给出错误

  14. 14

    为什么Math.max在Java中如此昂贵?

  15. 15

    为什么Haskell(GHC)中的多态性如此昂贵?

  16. 16

    为什么在Scala Option中如此创建单个元素列表?

  17. 17

    为什么在c中以如此奇怪的顺序执行代码?

  18. 18

    调用方法的顺序-在此示例中为什么如此重要?

  19. 19

    为什么安装程序中的命令如此困难?

  20. 20

    为什么在TestNG中此测试的执行顺序如此?

  21. 21

    为什么堆栈和堆在内存中如此分离?

  22. 22

    为什么在Rust中堆栈值相差如此远?

  23. 23

    为什么YouTube的缓冲/加载行为在Chrome中如此可怕?

  24. 24

    为什么在Debian中设置WLAN如此困难?(与Ubuntu相比)

  25. 25

    与Linux相比,为什么Windows中的搜索如此缓慢?

  26. 26

    为什么 tf.transpose 在 RNN 中如此重要?

  27. 27

    为什么`==`在zsh和bash中的[[...]`内部表现不同?

  28. 28

    在MSI中,LUA是什么?

  29. 29

    Lua中for ...的含义是什么?

热门标签

归档