我不明白的一段Lua语法

时间:2017-08-04 16:39:07

标签: function syntax lua

我正在使用基于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" }
)

2 个答案:

答案 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中,在某些情况下可以调用函数而不将其参数括在括号内,所以使用表作为参数调用inputoutputdescription函数。 / p>

然后将每个调用的结果用作Add函数的参数。