在Pascal,我有write和writeln.显然,Lua print与writelnPascal 类似.我们有类似writePascal的东西吗?连续打印命令如何将其输出发送到同一行?
print("Hello")
print("World")
Run Code Online (Sandbox Code Playgroud)
输出:
Hello
world
Run Code Online (Sandbox Code Playgroud)
我想要这个:
Hello world
Run Code Online (Sandbox Code Playgroud)
RBe*_*eig 21
扩展lhf的正确答案,该io库是生产使用的首选.
print基本库中的函数实现为基本功能.它允许快速和脏的脚本计算某些东西并打印答案,几乎无法控制其演示.它的主要优点是它强制所有参数,string并且它将输出中的每个参数与制表符分开并提供换行符.
当需要对输出进行详细控制时,这些优点很快就会成为缺陷.为此,你真的需要使用io.write.如果你混合print并io.write在同一个程序中,你可能会绊倒另一个缺陷.显式print使用C stdout文件句柄.这意味着如果您使用io.output更改输出文件句柄,io.write将执行您期望但print不会.
一个很好的妥协可以实现补发print来讲io.write.它可能看起来像这个未经测试的样本一样简单,我试图写清楚而不是最佳并仍然nil"正确" 处理参数:
local write = io.write
function print(...)
local n = select("#",...)
for i = 1,n do
local v = tostring(select(i,...))
write(v)
if i~=n then write'\t' end
end
write'\n'
end
Run Code Online (Sandbox Code Playgroud)
一旦您实现自己的版本print,那么它可能很容易以其他方式为您的应用程序改进它.使用比提供的更多格式控制的东西tostring()是一个好主意.另一个是考虑除制表符之外的分隔符.
作为替代方案,只需构建您的字符串然后用单个字符串写出来 print
您可能无法始终访问该io库.
小智 6
您可以将变量用于“Hello”和“World”。然后稍后将它们连接起来。像这样:
local h = "Hello"
local w = "World"
print(h..w)
Run Code Online (Sandbox Code Playgroud)
在这种情况下,它将显示为“HelloWorld”。但这很容易解决。希望这有帮助!
| 归档时间: |
|
| 查看次数: |
48258 次 |
| 最近记录: |