在Lua解释,当我们键入:为什么在Lua中==会表现得像这样?
>print(1=="1")
false
那么好吧!
>print(false==true)
false
好吧!
>print(string==math)
false
好,但为什么呢?
>print(function==nil)
stdin:1: '(' expected near '=='
我不明白==和〜=的工作。请解释
在Lua解释,当我们键入:为什么在Lua中==会表现得像这样?
>print(1=="1")
false
那么好吧!
>print(false==true)
false
好吧!
>print(string==math)
false
好,但为什么呢?
>print(function==nil)
stdin:1: '(' expected near '=='
我不明白==和〜=的工作。请解释
print(function==nil)
给你的错误信息:
标准输入: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
和别的:)
字符串和数学都是Lua的标准库。字符串和数学是两个不同的Lua表。因此它们不能相同,因此表达式字符串==数学是错误的。
从https://www.lua.org/manual/5.3/manual.html#3.4:
Lua中基本表达式如下:
EXP :: = prefixexp
EXP :: =零| false |真正
EXP :: =数字
EXP :: = LiteralString
EXP :: = functiondef
EXP :: = tableconstructor
EXP :: = '...'
exp :: = exp binop exp
exp :: = unop exp
prefixexp :: = var | functioncall | “(” EXP“)”
正如你看到的只是Lua的关键字为零,对自己的虚假和真实的表达。其他关键字不是。
数学和字符串没有Lua的关键字在所有。他们是类型表的变量。变量也是表达式。这就是为什么你没有得到一个错误math == string
问题,如通过阅读Lua的参考手册和编程在Lua最好回答。
我不说,你应该知道的一切,就在那里之前打个电话开始。但了解基础知识将会加速您的学习体验和理解!
为什么'string'应该等于'math'? 'function'是关键字,但不是可变的,所以'function == nil'根本就没有出现。 – moteus
'=='检查参数是否相等。不知道你的想法会发生什么,很难解释你的理解错误。是什么让你认为'string == math'会给出除false之外的结果?你期望什么是'print(function == nil)'的结果? –
@ChrisH就是这样!字符串和数学是标准库的一部分。所以如果字符串和数学是错误的,因为它们没有任何意义是相等的。然后函数和零也应该是假的,但事实并非如此。它抛出一个错误,而不是! –