在 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.11和https://www.lua.org/manual/5.3/manual.html#3.4和https://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 中编程可以最好地回答此类问题。
我并不是说在开始之前你应该知道里面的一切。但是了解最基本的知识将大大加快您的学习体验和理解!
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句