Paramètres nommés en Swift

Les règles pour nommer les paramètres en Swift dans les fonctions et les méthodes ont évoluer avec les différentes version de Swift et cela peut cause quelques confusions. Donc voici dans cet article quelques règles pour Swift 2.1.

Nom externe vs. nom interne

La clé pour comprendre la manière dont sont nommés les paramètres en Swift est de se rappeler que ces paramètres peuvent avoir un nom externes et un nom interne :

  • Les paramètres nommés internes sont utilisés dans le corps de la fonction / méthode.
  • Les paramètres nommés externes sont utilisés quand on appel la fonction / méthode.

En Swift 2.1 voici les règles par défaut qui s’appliquent :

  • Tous les paramètres nommés externes, excepté pour le premier paramètre, sont par défaut égaux au nom des paramètres internes.
  • Vous pouvez omettre le nom du premier paramètre lors de l’appel à la fonction / méthode (car il ne possède pas de nom externe par défaut).

Voici donc le comportement pas défaut en Swift avec cet example de 3 paramètres :

func foo(p1: String, p2: String, p3: String) {
  // p1, p2, p3 sont disponibles ici
}

foo("s1", p2: "s2", p3: "s3")

Utilisation des noms externes

Si vous voulez utiliser un nom externe pour les paramètres il suffit de faire précéder le nom interne avec un nom externe :

func foo(ext1 p1: String, ext2 p2: String, ext3 p3: String) {
  // p1, p2, p3 sont disponibles ici
}

foo(ext1: "s1", ext2: "s2", ext3: "s3")

Nos 3 paramètres ont maintenant 3 noms externes et internes :

  • paramètre 1 – nom externe : ext1, nom interne : p1
  • paramètre 1 – nom externe : ext2, nom interne : p2
  • paramètre 1 – nom externe : ext3, nom interne : p3

Il faut noter que contrairement aux noms internes, les noms externes n’ont pas besoin d’être unique.

Les initialiseurs

La règle change un peu pour les initialiseurs pour améliorer la lisibilité. Supposons que nous avons une structure avec un simple initialiseur :

struct UnPoint {
  let x, y: Int

  init(x: Int, y: Int) {
    self.x = x
    self.y = y
  }
}

Swift fournit un nom externe par défaut pour tous les paramètres d’un initialiseur. Cela signifie que vous devez nommer tous les paramètres, y compris le premier, lors de l’appel à un initialiseur :

let point = UnPoint(x: 100, y: 100)

Si vous désirez omettre le paramètre externe il faut surcharger l’initialiseur avec l’utilisation d’un underscore :

init(_ x: Int, _ y: Int) {
  self.x = x
  self.y = y
}

let origin = DataPoint(0, 0)

Quand utiliser des noms externes ?

Ce n’est pas parce que vous pouvez utiliser les noms externes que vous devez les utiliser n’importe comment. Le guide de programmation Swift nous suggère ceci :

L’utilisation de paramètre nommé externe peuvent permettre à une function d’être plus expressive, de la même manière qu’une phrase, tout en fournissant un nom lisible pour le corps de la fonction et claire dans ses intentions.

Par example, l’utilisation d’un paramètre nommé externe pour le premier paramètre permet de rendre le code plus claire dans certain cas :

func findRoute(from from: Point, to: CGPoint) {
  // ...
}

findRoute(from: place1, to: place2)
1 Etoile2 Etoiles3 Etoiles4 Etoiles5 Etoiles (4 votes, average: 5,00 out of 5)
Loading...

Aucun commentaire

Time limit is exhausted. Please reload CAPTCHA.

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.