Подтвердить что ты не робот

Возвращает несколько значений из функции в swift

Как мне вернуть 3 отдельных значения данных одного и того же типа (Int) из функции в swift?

Я пытаюсь вернуть время суток, мне нужно вернуть Час, Минуту и ​​Второе в качестве отдельных целых чисел, но все в одном направлении от одной и той же функции, возможно ли это?

Я думаю, что я просто не понимаю синтаксис для возврата нескольких значений. Это код, который я использую, у меня проблемы с последней (возвратной) строкой.

Любая помощь будет принята с благодарностью!

func getTime() -> Int
{
    let date = NSDate()
    let calendar = NSCalendar.currentCalendar()
    let components = calendar.components(.CalendarUnitHour | .CalendarUnitMinute | .CalendarUnitSecond, fromDate: date)
    let hour = components.hour
    let minute = components.minute
    let second = components.second
    let times:String = ("\(hour):\(minute):\(second)")
    return hour, minute, second
}
4b9b3361

Ответ 1

Вернуть кортеж:

func getTime() -> (Int, Int, Int) {
    ...
    return ( hour, minute, second)
}

Затем он вызывается как:

let (hour, minute, second) = getTime()

или

let time = getTime()
println("hour: \(time.0)")

Ответ 2

также:

func getTime() -> (hour: Int, minute: Int,second: Int) {
    let hour = 1
    let minute = 2
    let second = 3
    return ( hour, minute, second)
}

Затем он вызывается как:

let time = getTime()
print("hour: \(time.hour), minute: \(time.minute), second: \(time.second)")

Это стандартный способ использования этого слова в книге "Быстрый язык программирования", написанной Apple.

или так же:

let time = getTime()
print("hour: \(time.0), minute: \(time.1), second: \(time.2)")

это то же, но менее ясно.

Ответ 3

вы должны вернуть три разных значения из этого метода и получить эти три в одной переменной, как это.

func getTime()-> (hour:Int,min:Int,sec:Int){
//your code
return (hour,min,sec)
}

получить значение в одной переменной

let getTime = getTime()

теперь вы можете получить доступ к часам, минутам и секундам просто ".". то есть.

print("hour:\(getTime.hour) min:\(getTime.min) sec:\(getTime.sec)")

Ответ 4

Swift 3

func getTime() -> (hour: Int, minute: Int,second: Int) {
        let hour = 1
        let minute = 20
        let second = 55
        return (hour, minute, second)
    }

Использовать:

let(hour, min,sec) = self.getTime()
print(hour,min,sec)