检测 Lua 中的变量是否可以被打印出来。

我有一个变量,它可能是许多不同类型中的一种——有时是字符串,有时是数字、表或布尔值。我想每次打印出变量的值,像这样:

print("v: "..v)

其中 v 是我的变量。问题是,当我获取一个无法连接的值时,我会得到以下错误:

myscript.lua:79: attempt to concatenate a table value

我已经尝试将其更改为以下内容,以防它能够检测到变量是否可以打印:

print("v: "..(v or "<can't be printed>"))

但我在那里也遇到了同样的问题。有没有某种函数可以用来确定一个变量是否可以连接为一个字符串,或者更好的打印变量的方法?

点赞
用户1171043
用户1171043

您可以将值作为单独的参数传递给打印函数:

print("v:", v)

这将会打印出类似以下的信息:

v:  table: 006CE900

虽然不一定是最有用的打印方式,但对于调试目的而言,比崩溃要好得多。

点击此处了解更实用的表格打印信息。

2013-04-25 11:52:01
用户2338821
用户2338821

tostring(v)适用于所有可能的v值(包括nil)。所以你可以将你的代码写成:

print( "v: " .. tostring( v ) )

这样总是可以运行的。

或者你可以使用type(v),如果它是字符串类型,就打印出来,否则打印其他内容(如果你想要的话)。

2013-05-01 09:08:07