Lua打印在同一行

时间:2011-08-22 14:04:20

标签: lua

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

print("Hello")
print("World")

输出:

Hello
world

我想要这个:

Hello world

6 个答案:

答案 0 :(得分:68)

使用io.write代替print,无论如何都是用于简单用途,例如调试。

答案 1 :(得分:21)

扩展lhf's correct answerio库是首选用于生产用途。

基础库中的print函数实现为基本功能。它允许快速和脏的脚本计算某些东西并打印答案,几乎无法控制其演示。它的主要优点是它强制string的所有参数,并且它将输出中的每个参数与制表符分开并提供换行符。

当需要对输出进行详细控制时,这些优点很快就会成为缺陷。为此,您确实需要使用io.write。如果您在同一程序中混合printio.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

一旦您实现了自己的print版本,那么您可能很想以其他方式为您的应用程序改进它。使用比tostring()提供的更多格式控制的东西是个好主意。另一个是考虑除制表符之外的分隔符。

答案 2 :(得分:6)

作为替代方案,只需构建您的字符串,然后使用单个print

将其写出来

您可能无法始终访问io库。

答案 3 :(得分:4)

您可以使用" Hello"和"世界"。然后再连接它们。像这样:

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

print(h..w)

在这种情况下,它将显示为" HelloWorld"。但这很容易解决。希望这有帮助!

答案 4 :(得分:1)

在@Searous的答案之外,尝试以下操作。

local h =“ hello” 本地w =“世界”

print(h ..“” ..w)

您可以将两个变量串联在一起,只需在两个变量之间串联一个空格即可。

答案 5 :(得分:-5)

如果你想使用这个版本,你可以这样做

print(“hello world”)

商品之间的所有内容都将打印出来