Lua 语法中的一些不理解之处

我在使用一款基于 Lua 的产品,使用它们的 API 时发现了一些语法上的问题。

这是什么? 它是 Add 的函数调用吗?如果是,那么输入参数是什么 - 没有任何将该表分配给变量输入的等号符?

它是 Add 的函数定义吗?这看起来很奇怪,没有任何实现,并指定输入表中包含什么?

Add 是一个包含表的表吗?我从没有看过用圆括号而不是大括号创建表的方法?

serviceDefinitions.Add(
    input { name="p1", baseType="NUMBER", description="第一个相加的加数" },
    input { name="p2", baseType="NUMBER", description="第二个相加的加数" },
    output { baseType="NUMBER", description="两个参数的和" },
    description { "将两个数字相加" }
)
点赞
用户415823
用户415823

当调用只有一个表或字符串参数的函数时,您可以省略括号。根据手册

在调用之前,所有参数表达式都将被计算。形式为f {fields}的调用是f ({fields})的简写;也就是说,这个参数列表是一个新的表。形式为f'string'(或者f"string"f[[string]])的调用是f('字符串')的简写;也就是说,这个参数列表是一个单独的字面字符串。

这意味着以下函数调用是有效的:

somefunction({1,2,3,4})
somefunction{1,2,3,4}

或者,使用字符串:

print('hello!')
print 'hello!'
2017-08-04 16:52:49
用户1190388
用户1190388

如果您提供了文档的链接(或者甚至应用程序的名称),那么它会很有帮助,然而:

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"
    }
)

基本上是调用了 serviceDefinitions 表/类/结构/对象的 Add 函数,并传递了 4 个参数给它。由于在 lua 中,在某些情况下函数可以在不将其参数括在括号内的情况下调用,因此 inputoutputdescription 函数都以表格方式作为它参数。

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

2017-08-04 16:53:47