{}和()调用函数有什么区别?
What is the difference between {} and () in calling a function?
我最近看到了一种新方法,至少对我来说是这样,用于调用 Lua 中的函数,那就是使用大括号 {},当然前提是参数是 table。以这个函数为例说明我要考察的内容:
function test(table)
for _, i in pairs(table) do
print(i);
end
end
test{"What", "is", "the", "difference?"};
在调用函数test()时,我们使用了大括号“{}”而不是普通的大括号“()”。
那么我的问题来了,这两者之间有什么区别?哪个性能更好?我什么时候应该使用一个而不是另一个?为什么在普通牙套完成工作的同时创建这样的方式?
Lua 为函数参数提供了两个语法糖。他们的目的只是为了方便。
您可以根据方便性、可读性和软件设计选择您(和您的同事)喜欢的任何内容。性能方面没有区别。
如果您的唯一参数是单个文字字符串或单个新 table(table 构造函数!),您可以省略括号。
来自 Lua 参考手册:
Arguments have the following syntax:
args ::= `(´ [explist] `)´
args ::= tableconstructor
args ::= String
All argument expressions are evaluated before the call. A call
of the form f{fields}
is syntactic sugar for f({fields})
; that is, the
argument list is a single new table. A call of the form f'string'
(or
f"string"
or f[[string]])
is syntactic sugar for f('string')
; that is,
the argument list is a single literal string.
我最近看到了一种新方法,至少对我来说是这样,用于调用 Lua 中的函数,那就是使用大括号 {},当然前提是参数是 table。以这个函数为例说明我要考察的内容:
function test(table)
for _, i in pairs(table) do
print(i);
end
end
test{"What", "is", "the", "difference?"};
在调用函数test()时,我们使用了大括号“{}”而不是普通的大括号“()”。
那么我的问题来了,这两者之间有什么区别?哪个性能更好?我什么时候应该使用一个而不是另一个?为什么在普通牙套完成工作的同时创建这样的方式?
Lua 为函数参数提供了两个语法糖。他们的目的只是为了方便。
您可以根据方便性、可读性和软件设计选择您(和您的同事)喜欢的任何内容。性能方面没有区别。
如果您的唯一参数是单个文字字符串或单个新 table(table 构造函数!),您可以省略括号。
来自 Lua 参考手册:
Arguments have the following syntax:
args ::= `(´ [explist] `)´
args ::= tableconstructor
args ::= String
All argument expressions are evaluated before the call. A call of the form
f{fields}
is syntactic sugar forf({fields})
; that is, the argument list is a single new table. A call of the formf'string'
(orf"string"
orf[[string]])
is syntactic sugar forf('string')
; that is, the argument list is a single literal string.