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

Nan*_*iao 1 lua

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

> true and print("Hi")
Hi
nil
Run Code Online (Sandbox Code Playgroud)

为什么程序输出nil

dla*_*ask 7

print函数返回nil:

> print("Hi") == nil
Hi
true
Run Code Online (Sandbox Code Playgroud)

表达式true and nil返回nil(参见Lua中的逻辑运算符):

> true and nil
nil
Run Code Online (Sandbox Code Playgroud)

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


cat*_*ell 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'
Run Code Online (Sandbox Code Playgroud)

同理:

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

解释器只接受语句而不是表达.您可以使用return或使用快捷方式为表达式添加前缀=:

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

在Lua 5.3中,引入了一个新功能,使得像计算器一样使用解释器更简单:如果输入无效,则解释器会尝试使用前缀return.这就是你得到这个结果的原因.