-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
而'names.max(by:{$ 1.characters.count> $ 0.characters.count})'按預期進行編譯。你使用的是「尾隨閉包語法」。 –
查看[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