回答:
min
そしてmax
すでにSwiftで定義されています:
func max<T : Comparable>(x: T, y: T, rest: T...) -> T
func min<T : Comparable>(x: T, y: T, rest: T...) -> T
Swiftのドキュメント化された、およびドキュメント化されていない組み込み関数に関するこのすばらしい記事をご覧ください。
let a : Int = 5
してコマンド+クリックするとInt
、クールなものが表示されます!
a.
Xcode補完の可能性を入力してスクロールしていたのですが、「コマンド+クリック」がチケットです。
指摘したように、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 : Comparable
次のようにInt
sで使用できます。
let maxInt = max(5, 12) // returns 12
また、呼び出される他の関数がmax(_:_:_:_:)
ありmin(_:_:_:_:)
、さらに多くのパラメーターを比較できることにも注意してください。max(_:_:_:_:)
次の宣言があります:
func max<T>(_ x: T, _ y: T, _ z: T, _ rest: T...) -> T where T : Comparable
次のようにFloat
sで使用できます。
let maxInt = max(12.0, 18.5, 21, 26, 32.9, 19.1) // returns 32.9
ただし、Swiftを使用するmax(_:_:)
と、数字とその兄弟の使用に制限されません。これらの機能は一般的なものとに適合していることを任意のパラメータタイプを受け入れることができます実際には、Comparable
プロトコル、それはかもしれString
、Character
カスタムのまたは1つ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"
あなたが内部にある要素の最小/最大要素を取得したい場合はさらに、Array
、Set
、Dictionary
またはの任意の他の配列Comparable
の要素は、使用することができます(最大)または()分を見る(メソッドこのスタックオーバーフローの答えを多くのため詳細)。
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までの値を取得します。
Int
秒を明確に渡しても存在しないというメッセージが表示された場合は、Swift.maxに変更していきます。ありがとうwm.p1us!
これを試して。
let numbers = [2, 3, 10, 9, 14, 6]
print("Max = \(numbers.maxElement()) Min = \(numbers.minElement())")