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