webentwicklung-frage-antwort-db.com.de

Rückgabe mehrerer Werte aus einer Funktion im Handumdrehen

Wie gebe ich schnell drei separate Datenwerte desselben Typs (Int) von einer Funktion zurück?

Ich versuche, die Tageszeit zurückzugeben, ich muss die Stunde, Minute und Sekunde als separate Ganzzahlen zurückgeben, aber alle in einem gehen von derselben Funktion aus.

Ich glaube, ich verstehe die Syntax für die Rückgabe mehrerer Werte einfach nicht. Dies ist der Code, den ich verwende. Ich habe Probleme mit der letzten Zeile.

Jede Hilfe wäre sehr dankbar!

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
}
110
OllieGreen

Einen Tupel zurückgeben:

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

Dann wird es aufgerufen als:

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

oder:

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

Ebenfalls:

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

Dann wird es aufgerufen als:

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

Dies ist die Standardmethode im Buch The Swift Programming Language von Apple.

oder einfach wie:

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

es ist das gleiche, aber weniger klar.

61
jtianling

sie sollten drei verschiedene Werte aus dieser Methode zurückgeben und diese drei in einer einzigen Variablen wie dieser erhalten.

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

holen Sie sich den Wert in einer einzigen Variablen

let getTime = getTime()

jetzt können Sie die Stunden, Minuten und Sekunden einfach mit "." dh.

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

Swift 3

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

Benutzen :

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

Update Swift 4.1

Hier erstellen wir eine Struktur, um die Tuple-Verwendung zu implementieren und die OTP-Textlänge zu überprüfen. Das muss aus 2 Feldern für dieses Beispiel bestehen. 

struct ValidateOTP {
var code: String
var isValid: Bool }

func validateTheOTP() -> ValidateOTP {
    let otpCode = String(format: "%@%@", txtOtpField1.text!, txtOtpField2.text!)
    if otpCode.length < 2 {
        return ValidateOTP(code: otpCode, isValid: false)
    } else {
        return ValidateOTP(code: otpCode, isValid: true)
    }
}

Verwendungszweck:

let isValidOTP = validateTheOTP()
    if isValidOTP.isValid { print(" valid OTP") } else {   self.alert(msg: "Please fill the valid OTP", buttons: ["Ok"], handler: nil)
    }

Ich hoffe es hilft!

Vielen Dank

2
Harjot Singh
//By : Dhaval Nimavat
    import UIKit

   func weather_diff(country1:String,temp1:Double,country2:String,temp2:Double)->(c1:String,c2:String,diff:Double)
   {
    let c1 = country1
    let c2 = country2
    let diff = temp1 - temp2
    return(c1,c2,diff)
   }

   let result = 
   weather_diff(country1: "India", temp1: 45.5, country2: "Canada", temp2:    18.5)
   print("Weather difference between \(result.c1) and \(result.c2) is \(result.diff)")
0
Dhaval Nimavat