我完全不知道下面的Swift操作系統代碼示例中的addTwoNumbers函數如何將類型爲(Int,Int) - > Int的函數返回「(+)」簡單地調用「addTwoNumbers(2,2)」。爲什麼Swift函數只能返回一個數學運算符?
我無法在Swift文檔中找到解釋,因爲這個創造性的解決方案似乎不存在。我已經看到StackOverflow回答發表類似的代碼作爲其他問題的答案,但從來沒有解釋爲什麼「=(+)」的作品。我錯過了什麼?
請注意:我知道操作符是一等功能的函數。我也理解高階函數的概念。我縮短了代碼示例以保留主題,即(+)。
let addTwoNumbers: (Int, Int) -> Int = (+)
print(addTwoNumbers(5,3)) //8
簡單請@Carcigenicate。在括號中包裹+會使它成爲一個對象嗎?因此,通過用兩個參數調用它,它變成了2 + 2的等價物。 –
@Carcigenicate:來自https://math.stackexchange.com/questions/168378/operator-vs-function的評論,陳述「所有操作符都是函數」。所以當一個函數返回一個運算符(在這種情況下(+)也是一個函數),是否可以安全地通過add(2,2)來調用它,就像打印一樣(「hello」 )?換句話說,我們調用帶有兩個參數的+函數,但不是輸入+(2,2),而是根據提供的代碼示例輸入add(2,2)? –
我的示例和問題是針對高階函數領域中的Swift語言量身定製的,但是您的答案爲我提供了一些方向,可以更好地理解任何語言的概念。 –