在Lua中,有哪些不同的打印形式?

时间:2018-02-04 19:10:32

标签: lua

我正在学习Lua,我想知道print()=print()io.write()之间的区别。

2 个答案:

答案 0 :(得分:2)

print用于输出短信。它使用制表符加入其参数,并自动插入换行符。

io.write更简单。虽然它也接受任意数量的参数,但它只是连接它们(不插入任何字符)并且不添加任何换行符。可以将其视为应用于标准输出的file:write

这些行是等效的:

io.write("abc")
io.write("a", "b", "c")
io.write("a") io.write("b") io.write("c")

我建议您使用print输出普通文本消息,或者用于调试,以及io.write当您想要打印多个字符串而不显式连接它们时(使用io.write节省更多内存),能够单独写入文本的一部分,或通过字符串输出二进制数据。

答案 1 :(得分:1)

“Lua编程”中的这一短段解释了一些差异:

  

21.1简单I / O模型

     

print不同,write不会在输出中添加额外的字符,例如   标签或换行符。而且,write使用当前输出文件,   而print总是使用标准输出。最后,print   自动将tostring应用于其参数,因此它也可以显示   表格,函数和nil

还有以下建议:

  

作为一项规则,你应该使用print来快速和肮脏的程序,或者   调试,并在需要完全控制输出时写入

基本上,io.write使用当前输出文件调用write方法,使io.write(x)等效于io.output():write(x)

由于print只能将数据写入标准输出,因此其使用明显受限。同时,这可以保证消息始终传递到标准输出,因此您不会意外地弄乱某些文件内容,使其成为调试输出的更好选择。

另一个区别在于返回值:print返回nil,而io.write返回文件句柄。这允许你链接这样的写:

io.write('Hello '):write('world\n')