web-dev-qa-db-fra.com

Comment puis-je déclarer qu'une propriété calculée «jette» dans Swift?

class SomeClass {
  var someProperty: Int {
    throw Err("SNAFU")
  }
}

Pour le code comme ci-dessus, l'erreur binaire Swift se plaint) n'est pas gérée car la fonction englobante n'est pas déclarée 'jette'.

Comment puis-je déclarer que 'someProperty' 'jette' 'ci-dessus?

class SomeClass {
  var someProperty throws: Int {
  }
}

et

class SomeClass {
  var someProperty: throws Int {
  }
}

et

class SomeClass {
  var someProperty: Int throws {
  }
}

ne semblent pas fonctionner.

43
math4tots

Mise à jour pour Swift 5: ce n'est toujours pas possible.

Au Swift 3:

Vous ne pouvez pas lancer à partir d'une propriété calculée. Vous devez utiliser une fonction si vous voulez lancer. La partie Déclarations de la référence du langage à la fin de Le Swift ne répertorie que throws (et rethrows) comme mot-clé pour les déclarations de fonction et d'initialisation.

44
Charles A.

Bien qu'il soit pas (encore) de throw à partir des propriétés calculées dans Swift, j'ai trouvé Chris Lattner lui-même répond à cette même question sur l'un des Apple Forums des développeurs :

Nous convenons que vous devriez être en mesure de marquer les getters et setters comme des "lancers" dans les indices et les propriétés calculées, mais vous n'y êtes pas encore arrivé. Nous sommes susceptibles de soutenir cela à un moment donné, mais il n'est pas clair si cela arrivera à temps pour Swift 2.

44
paperlib