-2
私はXcode 8.2.1を使用しています。なぜArray.maxをこのように呼び出すことができますか?
public func max(by areInIncreasingOrder: (Element, Element) throws -> Bool) rethrows -> Element?
引数ラベルはby
で、引数名がareInIncreasingOrder
です:私は、アレイのマニュアルを見れば、私はmax
方法については、この宣言を見つけます。ラベルは明示的に指定されているので、関数の呼び出しに含める必要があると思っていましたが、ラベルを省略すると次のコードが機能します(例: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)セクションを参照してください。 "The Swift Programming Language"の本です。 – rmaddy