希望这不是一个愚蠢的问题,但我在找到这个问题之后一直在寻找,我无法找到任何记录在案的地方。在,
语句中使用逗号(print()
)有什么用处。它似乎与输入之间的选项卡连接。
示例:
print("this" .. "is" .. "string" .. "concatenation");
print("how", "is", "this", "also", "working?");
输出:
thisisstringconcatenation
how is this also working?
我甚至打扰研究这个问题的原因是因为它似乎允许连接nil
值。
示例2:
local nilValues = nil;
print("This", "somehow", "seems", "to", "concatenate", nilValues);
print("This" .. "will" .. "crash" .. "on" .. nilValues); -- ERROR -> attempt to concatenate local 'nilValues' (a nil value)
输出2:
This somehow seems to concatenate nil
Error: lua: test.lua:7: attempt to concatenate local 'nilValues' (a nil
value)
我已尝试在字符串连接中搜索逗号的用法,并检查了Lua guide中print()
上的文档,但我找不到任何可以解释这一点的内容。
答案 0 :(得分:4)
print
可以使用可变数量的参数,并在打印的项目之间插入\t
。您可以认为print
就像这样定义:(虽然实际上并非如此,但此示例代码取自 Lua中的编程 http://www.lua.org/pil/5.2.html)
printResult = ""
function print (...)
for i,v in ipairs(arg) do
printResult = printResult .. tostring(v) .. "\t"
end
printResult = printResult .. "\n"
end
在示例2中
local nilValues = nil;
print("This", "somehow", "seems", "to", "concatenate", nilValues);
print("This" .. "will" .. "crash" .. "on" .. nilValues);
第一个print
接受多个参数,并在它们之间逐个打印\t
。请注意,print(nil)
有效,并会打印nil
。
第二个print
只接受一个参数,即一个字符串。但字符串参数"This" .. "will" .. "crash" .. "on" .. nilValues
无效,因为nil
无法与字符串连接。
答案 1 :(得分:2)
print("this" .. "is" .. "string" .. "concatenation");
print("how", "is", "this", "also", "working?");
在第一次打印中,只有一个参数。它是一个字符串,“thisisstringconcatenation”。因为它首先进行连接,然后传递给print函数。
在第二次打印中,有5个参数传递给打印件。
local nilValues = nil;
print("This", "somehow", "seems", "to", "concatenate", nilValues);
print("This" .. "will" .. "crash" .. "on" .. nilValues);
在第二个示例中,您使用nil值连接一个字符串。然后导致错误