为什么Lua解释器输出为零?

时间:2015-06-28 09:50:22

标签: lua

Lua 5.3.0中,我运行“true and print("Hi")”:

> true and print("Hi")
Hi
nil

为什么程序输出nil

2 个答案:

答案 0 :(得分:7)

print函数返回nil

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

表达式true and nil返回nil(请参阅Logical operators in Lua):

> true and nil
nil

这就是原始表达式返回nil的原因。

答案 1 :(得分:6)

这是版本5.3中Lua解释器的新功能的副作用。

在以前的版本中,此代码无效:

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作为前缀。这就是你得到这个结果的原因。