我最近看到一种新方法,至少在我看来,用于调用Lua中的函数,即使用花括号{},当然如果参数是一个表。以此函数为例,我想检查一下:
function test(table)
for _, i in pairs(table) do
print(i);
end
end
test{"What", "is", "the", "difference?"};
在调用函数 test()时,我们使用花括号“{}”而不是普通的大括号“()”。
所以我的问题是,这两者有什么区别?哪个性能更好?我什么时候应该使用一个而不是另一个?为什么在正常的大括号完成这项工作时会产生这样的方式?
答案 0 :(得分:4)
Lua为函数参数提供了两种语法糖。他们的目的只是方便。
您可以在便利性,可读性和软件设计方面选择您(和您的同事)喜欢的任何内容。性能方面没有区别。
如果您的唯一参数是单个文字字符串或单个新表(表构造函数!),则可以省略括号。
来自Lua参考手册:
参数具有以下语法:
args ::= `(´ [explist] `)´
args ::= tableconstructor
args ::= String
在调用之前评估所有参数表达式。一个电话 形式
f{fields}
是f({fields})
的句法糖;那就是 参数列表是单个新表。拨打f'string'
表格(或f"string"
或f[[string]])
是f('string')
的语法糖;那是, 参数列表是单个文字字符串。