在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就是這樣!字符串和數學是標準庫的一部分。所以如果字符串和數學是錯誤的,因爲它們沒有任何意義是相等的。然後函數和零也應該是假的,但事實並非如此。它拋出一個錯誤,而不是! –