Comment renvoyer 3 valeurs de données distinctes du même type (Int) à partir d'une fonction dans swift?
J'essaie de renvoyer l'heure du jour, je dois renvoyer l'heure, la minute et la seconde sous forme de nombres entiers séparés, mais tout d'un coup à partir de la même fonction, est-ce possible?
Je pense que je ne comprends tout simplement pas la syntaxe pour renvoyer plusieurs valeurs. C'est le code que j'utilise, j'ai des problèmes avec la dernière ligne (de retour).
Toute aide serait grandement appréciée!
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
}
Retourner un tuple:
func getTime() -> (Int, Int, Int) {
...
return ( hour, minute, second)
}
Ensuite, il est appelé comme:
let (hour, minute, second) = getTime()
ou:
let time = getTime()
println("hour: \(time.0)")
Également:
func getTime() -> (hour: Int, minute: Int,second: Int) {
let hour = 1
let minute = 2
let second = 3
return ( hour, minute, second)
}
Ensuite, il est appelé comme:
let time = getTime()
print("hour: \(time.hour), minute: \(time.minute), second: \(time.second)")
C’est la manière habituelle de l’utiliser dans le livre The Swift Programming Language écrit par Apple.
ou juste comme:
let time = getTime()
print("hour: \(time.0), minute: \(time.1), second: \(time.2)")
c'est pareil mais moins clair.
vous devriez renvoyer trois valeurs différentes à partir de cette méthode et les obtenir dans une seule variable comme celle-ci.
func getTime()-> (hour:Int,min:Int,sec:Int){
//your code
return (hour,min,sec)
}
obtenir la valeur en variable unique
let getTime = getTime()
maintenant, vous pouvez accéder aux heures, minutes et secondes simplement par "." c'est à dire.
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)
}
Utiliser :
let(hour, min,sec) = self.getTime()
print(hour,min,sec)
Mise à jour Swift 4.1
Ici, nous créons une structure pour implémenter l'utilisation de Tuple et valider la longueur de texte OTP. Cela doit être de 2 champs pour cet exemple.
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)
}
}
Usage:
let isValidOTP = validateTheOTP()
if isValidOTP.isValid { print(" valid OTP") } else { self.alert(msg: "Please fill the valid OTP", buttons: ["Ok"], handler: nil)
}
J'espère que ça aide!
Merci
//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)")