C / Objective-C에서는 MIN 및 MAX 매크로를 사용하여 두 숫자 사이의 최소값과 최대 값을 찾을 수 있습니다. Swift는 매크로를 지원하지 않으며 언어 / 기본 라이브러리에 동등한 항목이없는 것 같습니다. 하나는 어쩌면이 같은 제네릭을 기반으로, 사용자 지정 솔루션으로 이동해야 하나 ?
답변
min그리고 max이미 스위프트에 정의되어 있습니다 :
func max<T : Comparable>(x: T, y: T, rest: T...) -> T
func min<T : Comparable>(x: T, y: T, rest: T...) -> TSwift의 문서화 및 문서화되지 않은 내장 함수에 대한이 훌륭한 글을 참조하십시오 .
답변
지적했듯이 Swift는 제공 max하고 min작동합니다.
예 (Swift 2.x 용으로 업데이트 됨).
let numbers = [ 1, 42, 5, 21 ]
var maxNumber = Int()
for number in numbers {
    maxNumber = max(maxNumber, number as Int)
}
print("the max number is \(maxNumber)")   // will be 42답변
스위프트 5로 max(_:_:)와 min(_:_:)의 일부인 글로벌 숫자 기능 . max(_:_:)다음과 같은 선언이 있습니다.
func max<T>(_ x: T, _ y: T) -> T where T : ComparableInts 와 함께 다음과 같이 사용할 수 있습니다 .
let maxInt = max(5, 12) // returns 12또한 다른 함수가 호출 max(_:_:_:_:)되어 min(_:_:_:_:)더 많은 매개 변수를 비교할 수 있습니다. max(_:_:_:_:)다음과 같은 선언이 있습니다.
func max<T>(_ x: T, _ y: T, _ z: T, _ rest: T...) -> T where T : ComparableFloats 와 함께 다음과 같이 사용할 수 있습니다 .
let maxInt = max(12.0, 18.5, 21, 26, 32.9, 19.1) // returns 32.9그러나 Swift를 사용 max(_:_:)하면 숫자가있는 형제와 사용에 국한되지 않습니다 . 사실, 이러한 기능은 일반적인하고 따르는 지 어떤 매개 변수 유형 받아 들일 수 Comparable프로토콜, 그것은있을 수 있습니다를 String, Character또는 사용자 정의 중 하나 class또는 struct.
따라서 다음 Playground 샘플 코드가 완벽하게 작동합니다.
class Route: Comparable, CustomStringConvertible {
    let distance: Int
    var description: String {
        return "Route with distance: \(distance)"
    }
    init(distance: Int) {
        self.distance = distance
    }
    static func ==(lhs: Route, rhs: Route) -> Bool {
        return lhs.distance == rhs.distance
    }
    static func <(lhs: Route, rhs: Route) -> Bool {
        return lhs.distance < rhs.distance
    }
}
let route1 = Route(distance: 4)
let route2 = Route(distance: 8)
let maxRoute = max(route1, route2)
print(maxRoute) // prints "Route with distance: 8"또한, Arraya Set, a Dictionary또는 기타 Comparable요소 시퀀스 내부에있는 요소의 최소 / 최대 요소를 얻으려면 max () 또는 min () 메서드를 사용할 수 있습니다 (자세한 내용은 이 스택 오버플로 답변 참조). 세부).
답변
SWIFT 4
구문이 약간 변경되었습니다.
public func max<T>(_ x: T, _ y: T) -> T where T : Comparable
public func min<T>(_ x: T, _ y: T) -> T where T : Comparable과
public func max<T>(_ x: T, _ y: T, _ z: T, _ rest: T...) -> T where T : Comparable
public func min<T>(_ x: T, _ y: T, _ z: T, _ rest: T...) -> T where T : Comparable따라서 사용할 때 다음 예제와 같이 작성해야합니다.
let min = 0
let max = 100
let value = -1000
let currentValue = Swift.min(Swift.max(min, value), max)따라서 0에서 100까지의 값을 얻습니다. 0 미만이거나 100 이상인지는 중요하지 않습니다.
답변
이 시도.
    let numbers = [2, 3, 10, 9, 14, 6]
    print("Max = \(numbers.maxElement()) Min = \(numbers.minElement())")답변
