我和Lua搞乱了几天,我发现了一些让我三思而后行的事情。 我还没有阅读参考手册Lua 5.3,因为它似乎很复杂,我很快就会检查它。
在lua 5.3中确定,我们知道print()返回 nil 并打印一个空格。
>print(print(print()))
--this prints three spaces
--but print() returns nil so print(nil) should
--print nil. But instead it is printing 3 spaces
>print(type(2))
number --this prints a number since type(2) returns a
--number , but this doesn't work with print(print())
--why?
答案 0 :(得分:6)
从函数返回任何内容与返回nil
不同。结果可能会令人困惑,因为大多数时间没有返回任何内容的解释类似于返回nil
,但在print
的情况下,它不会打印nil
,因为没有什么是返回。
您可以看到以下示例的不同之处:
print(select('#', (function() return end)())) -- prints 0
print(select('#', (function() return nil end)())) -- prints 1
在第一种情况下,返回值的数量为0,但在第二种情况下,此数字为1,因此在打印时,它将按预期显示nil
。
我们知道print()返回nil并打印一个空格。
这两项都不正确:print()
没有返回nil
;什么也没有回报。它也不会打印空格,但在打印完所有值后会添加换行符,因此您可能会在第一个示例中看到三行。