2016-05-13 2 views
10

Wenn ich ein Tupel wie dieseSwift: Erhalten Sie ein Element aus einem Tupel

var answer: (number: Int, good: Bool) 

habe Wie komme ich eines der Elemente?

funktioniert das nicht:

answer["number"] 

ich diese Frage nach Swift: Get an array of element from an array of tuples bin Modellierung, war aber meine Frage etwas einfacher. Ich habe die Antwort in der documentation begraben gefunden, also füge ich meine Antwort unten in Q & ein Format für schnellere Suche in der Zukunft hinzu.

Antwort

34

Gemäß der documentation (scrollen Sie nach unten zu Tupel) gibt es drei Möglichkeiten, dies zu tun.

var answer: (number: Int, good: Bool) = (100, true) 

Methode 1

Variablennamen innerhalb eines Tupels Setzen des Elements angegeben.

let (firstElement, _) = answer 
let (_, secondElement) = answer 

oder

let (firstElement, secondElement) = answer 

Methode 2

den Index.

let firstElement = answer.0 
let secondElement = answer.1 

Methode 3

die Namen verwenden. Das funktioniert natürlich nur, wenn die Elemente in der Tuple-Deklaration benannt wurden.

let firstElement = answer.number 
let secondElement = answer.good 
+2

nach dem Lernen, wie Variablen in Swift zu erklären, muss ich sagen, dass Methode 1 wirklich meine Augen weh tut – BigOmega

1

Ich habe das versucht. Es ist nicht so gut, aber funktioniert ...

protocol SubscriptTuple { 
    associatedtype Tuple 
    associatedtype Return 
    var value: Tuple { get set } 
    subscript(sub: String) -> Return? { get } 
} 

struct TupleContainer: SubscriptTuple { 
    typealias Tuple = (number: Int, good: Bool) 
    typealias Return = Any 
    var value: Tuple 
    subscript(sub: String) -> Return? { 
     switch sub { 
     case "number": 
      return value.number 
     case "good": 
      return value.good 
     default: 
      return nil 
     } 
    } 
} 

Und das ist wie zu verwenden.

let answer = Answer(value: (120, false)) 
answer["number"] 
+0

Ich bin mit Swift 2.2. – Lumialxk