3

希望这不是一个愚蠢的问题,但我在偶然发现这个问题后一直在四处寻找,但我找不到任何记录在案的地方。语句中的逗号 ( ,) 有什么用。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)

我尝试在字符串连接中搜索逗号的用法,并检查了print()Lua guide中的文档,但我找不到任何解释这一点的东西。

4

2 回答 2

4

print可以采用可变数量的参数,并\t在打印的项目之间插入。您可以认为好像print是这样定义的:(尽管实际上不是,此示例代码取自Programming in 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不能与字符串连接。

于 2013-06-03T14:06:44.133 回答
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 值连接字符串。然后导致错误

于 2013-06-04T11:20:24.280 回答