Swift instruction switch sur un tuple de facultatif booléens
J'ai de la difficulté à comprendre comment utiliser les options à l'intérieur d'un tuple à l'intérieur d'un commutateur. Le ci-dessous .Certains ( ... ) ... la syntaxe fonctionne comme non-tuple, mais à l'intérieur d'un tuple je vous prévu séparateur de stuff 🙁
var dict = Dictionary<String,Bool>()
dict["a"] = true
switch (dict["a"],dict["b") {
case (.Some(let a) where !a, .Some(let b) where b):
println("false/nil, true")
case (.Some(let a) where a, .Some(let b) where !b):
println("true, false/nil")
Je veux éviter de faire les suivants
if let a = self.beaconList["a"] {
if let b = self.beaconList["b"] {
//a, b
} else {
//a, !b
}
} else {
if let b = self.beaconList["b"] {
//!a, b
} else {
//!a, !b
}
}
OriginalL'auteur nflacco | 2014-06-27
Vous devez vous connecter pour publier un commentaire.
Il y a des tas de façons de le faire, mais pour corriger la syntaxe de ce que vous essayez de faire littéralement, vous devez explicitement unbox l'Option, soit par correspondance contre .Certains(false), ou à déballer avec ! (qui je pense est une sorte de bizarre, comme vous allez le voir)
Vous pouvez également essayer les suivantes:
Voici un résumé de l'aire de Jeux que j'ai utilisé lors de l'écriture de cette réponse: https://gist.github.com/bgrace/b8928792760159ca58a1
!b!
grossièreté en faisant à la fois lea
&b
args implicitement-déballé options avecmatchOneOrTheOtherWithOptionals(a: Bool!, b: Bool!)
. Alors votre caswhere
s de devenir simplementwhere b == .none || !b:
&where a == .none || !a:
. Ce qui est totalement sûr de le faire ici parce que vous êtes explicitement de vérifier à la foisa
&b
pour.none
avant d'utiliser le enveloppés valeur booléenne.OriginalL'auteur Brett
Simplifier!
OriginalL'auteur Robert Diamond