Définir
func secondsToHoursMinutesSeconds (seconds : Int) -> (Int, Int, Int) {
return (seconds / 3600, (seconds % 3600) / 60, (seconds % 3600) % 60)
}
Utilisation
> secondsToHoursMinutesSeconds(27005)
(7,30,5)
ou
let (h,m,s) = secondsToHoursMinutesSeconds(27005)
La fonction ci-dessus utilise des tuples Swift pour renvoyer trois valeurs à la fois. Vous déstructurez le tuple en utilisant lelet (var, ...)
syntaxe ou pouvez accéder à des membres de tuple individuels, si nécessaire.
Si vous avez réellement besoin de l'imprimer avec les mots, Hours
etc., utilisez quelque chose comme ceci:
func printSecondsToHoursMinutesSeconds (seconds:Int) -> () {
let (h, m, s) = secondsToHoursMinutesSeconds (seconds)
print ("\(h) Hours, \(m) Minutes, \(s) Seconds")
}
Notez que l'implémentation ci-dessus secondsToHoursMinutesSeconds()
fonctionne pour les Int
arguments. Si vous voulez une Double
version, vous devrez décider quelles sont les valeurs de retour - pourraient être (Int, Int, Double)
ou pourraient être (Double, Double, Double)
. Vous pouvez essayer quelque chose comme:
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
peut être optimisée àseconds % 60
. Pas besoin d'extraire d'abord les heures.