Paramètre Int utilisée dans une fonction ?
Gercofis
Membre
Il semblerait qu'il ne soit pas possible de modifier un paramètre Int a l'intérieur d'une fonction ?
D'abord est-ce exact ?
Obligeant a ajouter les 2 lignes a l'intérieur de la fonction comme dans ce bout de code
func calculRst(compteurA: UILabel, compteurB: UILabel, _Compteur: Int , _CompteurHier: Int){
var _Compteur = _Compteur
var _CompteurHier = _CompteurHier
let formateur = NumberFormatter()
_Compteur = formateur.number(from: compteurA.text!) as! Int
_CompteurHier = formateur.number(from: compteurB.text!) as! Int
A-t-on une solution plus clean ?
Plus on avance avec Swift et plus on découvre des lacunes cachées ? Aggrr....
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Ce n'est pas une lacune, c'est un choix. Dans du code Swift bien écrit, on utilise toujours let plutôt que var si c'est possible, parce que pouvoir réattribuer une valeur à un symbole est une source de bug potentielle.
Pourquoi passer _Compteur et _CompteurHier, si c'est pour aller les écraser après ?
P.S.: La création d'un NumberFormatter est lourde, conserve-le dans une propriété lazy.
Pourquoi tout ce code ? Pourquoi cette méthode ?
Il s'agà®t d'une petite application perso (que je donne volontier) sur l'évaluation des coûts de consommation électrique.
Mon compteur type TEMPO EDF possède 6 compteurs et donc 6 tarifs. Globalement heures pleines, heures creuses et suivant les jours 3 couleurs Bleu, Blanc et Rouge. La manipe consiste donc à faire la différence entre 2 compteurs du même type. On a donc les 6 possibilités, et le résultat est multiplié par le prix du kw. Ensuite il faut additionner les 2 résultats d'une même couleur.
D'où l'idée de ne faire qu'une fonction de calcul avec les paramètres correspondants. Et ça fonctionne.
C'est en voulant simplifier en vue de stocker les valeurs que je voulais passer les compteurs en Int et les tarifs en Float.
@joanna d'une façon générale je n'utilise que des let qui pour le coup passent en var. Si ça complique trop je renoncerai.