我正在使用基于Lua的产品,我正在使用他们的API,并且有一些我不理解的语法。
这是什么? 它是Add的函数调用,如果是,那么输入参数是什么 - 没有将该表分配给变量输入 - 没有等号?它是Add的函数定义 - 看起来很奇怪,没有任何实现并指定输入表中的内容?
是否添加包含表格的表格?我从未见过用括号而不是花括号创建的表格?
serviceDefinitions.Add(
input { name="p1", baseType="NUMBER", description="The first addend of the
operation" },
input { name="p2", baseType="NUMBER", description="The second addend of the operation" },
output { baseType="NUMBER", description="The sum of the two parameters" },
description { "Add two numbers" }
)
答案 0 :(得分:6)
当调用只有一个参数是表或字符串的函数时,可以省略括号。来自manual:
在调用之前评估所有参数表达式。
f{fields}
形式的调用是f({fields})
的语法糖;也就是说,参数列表是一个新表。f'string'
(或f"string"
或f[[string]])
形式的调用是f('string')
的语法糖;也就是说,参数列表是单个文字字符串。
这意味着以下函数调用有效:
somefunction({1,2,3,4})
somefunction{1,2,3,4}
或者,使用字符串:
print('hello!')
print 'hello!'
答案 1 :(得分:2)
如果您提供了文档链接(甚至是应用程序名称),那将会有所帮助,但是:
serviceDefinitions.Add(
input {
name="p1",
baseType="NUMBER",
description="The first addend of the operation"
},
input {
name="p2",
baseType="NUMBER",
description="The second addend of the operation"
},
output {
baseType="NUMBER",
description="The sum of the two parameters"
},
description {
"Add two numbers"
}
)
基本上调用Add
table / class / struct / object的serviceDefinitions
函数,并传递4个参数。因为在lua中,在某些情况下可以调用函数而不将其参数括在括号内,所以使用表作为参数调用input
,output
和description
函数。 / p>
然后将每个调用的结果用作Add
函数的参数。