Definir
func secondsToHoursMinutesSeconds (seconds : Int) -> (Int, Int, Int) {
return (seconds / 3600, (seconds % 3600) / 60, (seconds % 3600) % 60)
}
Utilizar
> secondsToHoursMinutesSeconds(27005)
(7,30,5)
o
let (h,m,s) = secondsToHoursMinutesSeconds(27005)
La función anterior hace uso de las tuplas Swift para devolver tres valores a la vez. Puede desestructurar la tupla utilizando la let (var, ...)sintaxis o puede acceder a miembros individuales de la tupla, si es necesario.
Si realmente necesita imprimirlo con las palabras, Hoursetc., use algo como esto:
func printSecondsToHoursMinutesSeconds (seconds:Int) -> () {
let (h, m, s) = secondsToHoursMinutesSeconds (seconds)
print ("\(h) Hours, \(m) Minutes, \(s) Seconds")
}
Tenga en cuenta que la implementación anterior de secondsToHoursMinutesSeconds()trabajos para Intargumentos. Si desea una Doubleversión, deberá decidir cuáles son los valores de retorno: podría ser (Int, Int, Double)o podría ser (Double, Double, Double). Podrías probar algo como:
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) % 60puede optimizarse paraseconds % 60. No es necesario extraer las horas primero.