我正在学习Lua,我想知道print()
和=
或print()
和io.write()
之间的区别。
答案 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模型
与
write
不会在输出中添加额外的字符,例如 标签或换行符。而且,write
使用当前输出文件, 而tostring
应用于其参数,因此它也可以显示 表格,函数和nil
。
还有以下建议:
作为一项规则,你应该使用print来快速和肮脏的程序,或者 调试,并在需要完全控制输出时写入
基本上,io.write
使用当前输出文件调用write
方法,使io.write(x)
等效于io.output():write(x)
。
由于print
只能将数据写入标准输出,因此其使用明显受限。同时,这可以保证消息始终传递到标准输出,因此您不会意外地弄乱某些文件内容,使其成为调试输出的更好选择。
另一个区别在于返回值:print
返回nil
,而io.write
返回文件句柄。这允许你链接这样的写:
io.write('Hello '):write('world\n')