2015-06-28 104 views

回答

7

print函數返回nil

> print("Hi") == nil 
Hi 
true 

表達true and nil回報nil(見Logical operators in Lua):

> true and nil 
nil 

這就是爲什麼你的原始表達式返回nil

+0

實際上,'print'函數返回什麼,但與布爾運算符使用時的返回值的數目是調整到一個值(這是在這種情況下'nil')。 '(打印(「你好」))'有出於同樣的原因,普通'打印(「你好」)'不會寫'nil'到控制檯同樣的效果。 – siffiejoe

+0

@siffiejoe你是對的。它位於C級,其中一個Lua函數不返回值,並返回一個'nil'參數另一個函數之間的區別是明顯的甚至更加明顯。感謝您的澄清。 – dlask

6

這是Lua解釋的新功能在5.3版的副作用。

在以前的版本中,這段代碼是無效的:

Lua 5.2.4 Copyright (C) 1994-2015 Lua.org, PUC-Rio 
> true and print("Hi") 
stdin:1: unexpected symbol near 'true' 

同理:

Lua 5.2.4 Copyright (C) 1994-2015 Lua.org, PUC-Rio 
> 1+1 
stdin:1: unexpected symbol near '1' 

的解釋只能接受聲明,沒有表情。你可以用return或快捷=前綴的表達式,但:

Lua 5.2.4 Copyright (C) 1994-2015 Lua.org, PUC-Rio 
> =1+1 
2 
> =true and print("Hi") 
Hi 
nil 

Lua中5.3中的新功能已被引入到更簡單地使用這個解釋類似於計算器:如果輸入是無效的,那麼解釋試圖以return作爲前綴。這就是你得到這個結果的原因。