กำหนด
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)
ฟังก์ชั่นด้านบนใช้ประโยชน์จาก Swuple tuples เพื่อคืนค่าสามค่าในครั้งเดียว คุณปรับโครงสร้าง tuple โดยใช้let (var, ...)
ไวยากรณ์หรือสามารถเข้าถึงสมาชิก tuple แต่ละรายการได้ถ้าต้องการ
หากคุณต้องการพิมพ์ออกมาด้วยคำ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
เป็น ไม่จำเป็นต้องแตกชั่วโมงก่อน