Aller au contenu


Photo

Paramètre Int utilisée dans une fonction ?


  • Please log in to reply
3 réponses à ce sujet

#1 Gercofis

Gercofis

    Ecabosseur en fèves

  • Membre
  • PipPipPipPip
  • 334 messages
  • LocationCrozon l'Été et Chambéry l'Hiver

Posté 06 décembre 2017 - 17:53

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....


Le compilateur c'est aussi bête (?/!) qu'une femme: il/elle râle d'abord, on grogne après, en fin de compte il/elle a toujours raison, de toutes façons on est obligé de céder et ça devient si bien quant il/elle est d'accord.
MacBookPro 2.6 GHz i7 8Go - iPad 3 3G 32Go - iPhone 4 et SE 16Go - en principe tout ça est a jour...

En retraite programmeur a ses heures, pas toujours très assidu, et un peu voir beaucoup fâché avec l'anglais ( un séjour correspondant est envisagé, si vous avez des plans (automne ou printemps) Je dois reconnaitre que le jeu Duolingo m'a bien fait avancer dans cette démarche .

Merci.


#2 Céroce

Céroce

    Mouleur de chocolats

  • Contrôleur d'arômes
  • 5 384 messages
  • LocationSaint-Leu-d'Esserent / France

Posté 06 décembre 2017 - 18:09

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 ?

Il me semble bien que oui, à moins que le paramètre soit inout.
 

Plus on avance avec Swift et plus on découvre des lacunes cachées ? Aggrr....

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.
 

A-t-on une solution plus clean ?

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.
RenaudPradenc.com Je suis développeur iOS & Mac indépendant.

#3 Joanna Carter

Joanna Carter

    Brasseur de pâte à cacao

  • Contrôleur d'arômes
  • 2 038 messages
  • LocationPlestin-les-Grèves (22)

Posté 06 décembre 2017 - 18:16

Pourquoi tout ce code ? Pourquoi cette méthode ?

class ViewController: UIViewController
{

  @IBOutlet weak var compteurA: UILabel!
  
  @IBOutlet weak var compteurB: UILabel!
  
  override func viewDidLoad()
  {
    super.viewDidLoad()

    guard let compteurAText = compteurA.text,
          let compteur = Int(compteurAText),
          let compteurBText = compteurB.text,
          let compteurHier = Int(compteurBText) else
    {
      return
    }
  }
}


  • Draken aime ceci

#4 Gercofis

Gercofis

    Ecabosseur en fèves

  • Membre
  • PipPipPipPip
  • 334 messages
  • LocationCrozon l'Été et Chambéry l'Hiver

Posté 08 décembre 2017 - 00:26

Il vaut probablement quelques explications sur la démarche.
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.

Le compilateur c'est aussi bête (?/!) qu'une femme: il/elle râle d'abord, on grogne après, en fin de compte il/elle a toujours raison, de toutes façons on est obligé de céder et ça devient si bien quant il/elle est d'accord.
MacBookPro 2.6 GHz i7 8Go - iPad 3 3G 32Go - iPhone 4 et SE 16Go - en principe tout ça est a jour...

En retraite programmeur a ses heures, pas toujours très assidu, et un peu voir beaucoup fâché avec l'anglais ( un séjour correspondant est envisagé, si vous avez des plans (automne ou printemps) Je dois reconnaitre que le jeu Duolingo m'a bien fait avancer dans cette démarche .

Merci.





0 utilisateur(s) li(sen)t ce sujet

0 membre(s), 0 invité(s), 0 utilisateur(s) anonyme(s)