Визначте
func secondsToHoursMinutesSeconds (seconds : Int) -> (Int, Int, Int) {
return (seconds / 3600, (seconds % 3600) / 60, (seconds % 3600) % 60)
}
Використовуйте
> secondsToHoursMinutesSeconds(27005)
(7,30,5)
або
let (h,m,s) = secondsToHoursMinutesSeconds(27005)
Вищенаведена функція використовує кортежі Swift для повернення трьох значень одночасно. Ви знищуєте кортеж за допомогоюlet (var, ...) синтаксису або можете отримати доступ до окремих членів кортежу, якщо це необхідно.
Якщо вам справді потрібно роздрукувати його словами Hoursтощо, тоді використовуйте щось подібне:
func printSecondsToHoursMinutesSeconds (seconds:Int) -> () {
let (h, m, s) = secondsToHoursMinutesSeconds (seconds)
print ("\(h) Hours, \(m) Minutes, \(s) Seconds")
}
Зауважимо, що вищевказана реалізація secondsToHoursMinutesSeconds()працює для Intаргументів. Якщо ви хочете Doubleверсії, вам потрібно буде вирішити, які значення повернення - (Int, Int, Double)чи можуть бути (Double, Double, Double). Ви можете спробувати щось на кшталт:
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можна оптимізувати доseconds % 60. Не потрібно спочатку витягувати години.