Lua在同一行上打印

在 Pascal 中,我有 writewriteln。 显然 Lua 的 print 类似于 Pascal 的 writeln。 我们有类似于 Pascal 的 write 的东西吗? 连续的输出命令如何将它们的输出发送到同一行?

print(“Hello”)
print(“World”)

输出:

Hello
world

我想要这个:

Hello world

原文链接 https://stackoverflow.com/questions/7148678

点赞
stackoverflow用户107090
stackoverflow用户107090

使用 io.write 而不是 print,后者仅适用于简单的用途,例如调试。

2011-08-22 14:07:35
stackoverflow用户151501
stackoverflow用户151501

作为一种选择,只需构建您的字符串,然后使用单个 print 将其输出即可。

您可能并不总是能够访问 io 库。

2011-08-22 14:16:18
stackoverflow用户68204
stackoverflow用户68204

通过扩展 lhf 的正确答案io 库是生产环境下首选的库。

基本库中的 print 函数是一个基本能力。它允许快速而肮脏的脚本来计算一些东西并打印一个答案,但对其表示形式的控制却很少。它的主要好处是将所有参数强制转换为 string,并用制表符将每个参数在输出中分隔开,并补充一个换行符。

当需要对输出进行详细控制时,这些优点很快就变成了缺陷。对此,您确实需要使用 io.write。如果在同一个程序中混合使用 printio.write,那么您可能会遇到另一个缺陷。print 显式使用 C 的 stdout 文件句柄。这意味着,如果您使用 io.output 更改输出文件句柄,则 io.write 将按您所期望的方式工作,但 print 则不会。

一个很好的折中方法是基于 io.write 实现 print 的替代版。它看起来可能像下面的没有经过测试的示例那样简单,我试图编写清晰而不是最优的代码,并且正确处理 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

一旦您实现了自己的 print 版本,就可能会有引发联想并以其他方式改进它。使用比 tostring() 更多的格式控制的东西是一个好主意。另一个是考虑使用一个制表符字符以外的分隔符。

2011-08-22 21:14:33
stackoverflow用户4474534
stackoverflow用户4474534

你可以使用变量来储存"Hello"和"World"。稍后再将它们串联起来。像这样:

local h = "Hello"
local w = "World"

print(h..w)

在这种情况下,输出将会是"HelloWorld"。但这很容易修复。希望这可以帮到你!

2015-01-20 15:01:06
stackoverflow用户4957621
stackoverflow用户4957621

延续 @Searous 的回答,尝试以下代码。

local h = "hello"
local w = "world"

print(h.." "..w)

你可以将两个变量连接起来,在它们之间加上空格。

2020-06-10 04:27:08
stackoverflow用户17205471
stackoverflow用户17205471
本地 h = "你好"
本地 w = "世界!"

打印(h,w)
2021-10-20 20:41:59