2017-08-04 111 views
4

我正在使用基於Lua的產品,我正在使用他們的API,並且存在一些我不明白的語法。我不明白的Lua語法片段

這是什麼? 它是一個函數調用添加,如果是的話什麼是輸入參數 - 沒有什麼將該表分配給變量輸入 - 沒有等號?

它是一個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

這看起來像服務的驗證或文檔?我們無法用您提供的代碼做很多事情,有沒有額外的上下文? – Henry

回答

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

基本上調用serviceDefinitions表/類/結構/對象的用4個參數傳遞給它的功能Add。因爲在lua中,在某些情況下函數可以被調用而不將其參數括在圓括號內,所以調用input,outputdescription函數時使用表作爲它們的參數。

然後將這些調用的結果用作Add函數的參數。