Definieren
func secondsToHoursMinutesSeconds (seconds : Int) -> (Int, Int, Int) {
return (seconds / 3600, (seconds % 3600) / 60, (seconds % 3600) % 60)
}
Verwenden
> secondsToHoursMinutesSeconds(27005)
(7,30,5)
oder
let (h,m,s) = secondsToHoursMinutesSeconds(27005)
Die obige Funktion verwendet Swift-Tupel, um drei Werte gleichzeitig zurückzugeben. Sie zerstören das Tupel mithilfe der let (var, ...)
Syntax oder können bei Bedarf auf einzelne Tupelelemente zugreifen.
Wenn Sie es tatsächlich mit den Worten ausdrucken müssen Hours
usw. Folgendes:
func printSecondsToHoursMinutesSeconds (seconds:Int) -> () {
let (h, m, s) = secondsToHoursMinutesSeconds (seconds)
print ("\(h) Hours, \(m) Minutes, \(s) Seconds")
}
Beachten Sie, dass die obige Implementierung von Argumenten secondsToHoursMinutesSeconds()
funktioniert Int
. Wenn Sie eine Double
Version wünschen, müssen Sie entscheiden, wie die Rückgabewerte lauten - könnten (Int, Int, Double)
oder könnten (Double, Double, Double)
. Sie könnten etwas versuchen wie:
func secondsToHoursMinutesSeconds (seconds : Double) -> (Double, Double, Double) {
let (hr, minf) = modf (seconds / 3600)
let (min, secf) = modf (60 * minf)
return (hr, min, 60 * secf)
}
(seconds % 3600) % 60
kann auf optimiert werdenseconds % 60
. Sie müssen die Stunden nicht zuerst extrahieren.