逗号分隔打印()

时间:2013-06-03 13:44:18

标签: syntax lua null

希望这不是一个愚蠢的问题,但我在找到这个问题之后一直在寻找,我无法找到任何记录在案的地方。在,语句中使用逗号(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 guideprint()上的文档,但我找不到任何可以解释这一点的内容。

2 个答案:

答案 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值连接一个字符串。然后导致错误