【发布时间】:2018-11-01 20:16:51
【问题描述】:
当你将变量传递给函数时,lua 是否有扩展运算符?
例如,我有一个数组a,我想将它传递给另一个函数,比如string.format。如果我只是做string.format(a),那么我会得到 p>
bad argument #1 to 'format' (string expected, got table)
我尝试local f, e = pcall(string.format, t) 没有任何运气。
【问题讨论】:
-
看起来你想要研究的是可变参数。
string.format接受一个参数,一个字符串类型。除非您为此创建自己的功能,否则您可能会遇到问题。我举了一个例子,但不确定它是否是你要找的。span> -
基本上它所做的就是创建一个函数,将每个元素(无论类型如何)连接成一个字符串值。不是很漂亮,但适用于表迭代。以及其他任何事情。字符串、数字、列表。
-
@JamesWhyte 我的意思是你可以做
string.format('Hello %s', 'there')会返回Hello there -
@JamesWhyte 我基本上有一个记录器可以做到这一点;将复杂对象类型转换为字符串。但我也希望能够格式化它们。所以我可以做
logger.info('User with id %s is %s', userId, table) -
我做了一个可能值得一看的答案?我了解到字符串格式会增加 args 的界限,因为您拥有的
%s越多。你可以做的是像local paramLength = #t这样的东西,然后遍历一个变量,这个变量是你的参数来连接更多的字符串。