2017-02-21 31 views
-2

我正在使用Xcode 8.2.1。如果我看Array的文檔,我覺得這個聲明爲max方法:爲什麼我可以這樣調用Array.max?

public func max(by areInIncreasingOrder: (Element, Element) throws -> Bool) rethrows -> Element?

的參數標籤是by和參數名稱爲areInIncreasingOrder。由於明確指定了標籤,因此我認爲它必須包含在對函數的調用中,但如果我省略標籤(即by),則下面的代碼有效。

我誤解了在調用方法時如何使用參數標籤?或者,我的示例代碼是否調用max方法的不同版本?

示例代碼:

let names = ["Talyor", "Paul", "Adele"] 

let longest = names.max { $1.characters.count > $0.characters.count } 
print(longest!) // "Taylor 
+2

而'names.max(by:{$ 1.characters.count> $ 0.characters.count})'按預期進行編譯。你使用的是「尾隨閉包語法」。 –

+1

查看[Trailing Closure](https://developer.apple.com/library/content/documentation/Swift/Conceptual/Swift_Programming_Language/Closures.html#//apple_ref/doc/uid/TP40014097-CH11-ID102)部分「Swift編程語言」一書。 – rmaddy

回答

相關問題