Printing 为什么print(print())不像Lua中的print(type(2))那样工作?
我和Lua交往了几天,我发现了一些让我三思而后行的事情我还没有阅读参考手册Lua 5.3,因为它看起来很复杂,我将很快检查它 在Lua5.3中,我们知道print()返回nil并打印一个空格。Printing 为什么print(print())不像Lua中的print(type(2))那样工作?,printing,types,lua,Printing,Types,Lua,我和Lua交往了几天,我发现了一些让我三思而后行的事情我还没有阅读参考手册Lua 5.3,因为它看起来很复杂,我将很快检查它 在Lua5.3中,我们知道print()返回nil并打印一个空格。 >print(print(print())) --this prints three spaces --but print() returns nil so print(nil) should
>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?
从函数中不返回任何内容与返回
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
;它什么也不返回。它也不打印空格,但在打印完所有值后会添加一个换行符,因此您可能会在第一个示例中看到打印的三行。print不返回任何内容。所以print(print())
等于print()print()