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
}
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)")
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.
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)")
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)
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
//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)")