2016-05-13 23 views

Odpowiedz

34

Zgodnie z documentation (przewiń w dół do Tuples), istnieją trzy sposoby, aby to zrobić.

Biorąc

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

Metoda 1

Wpisz nazwę elementu zmiennego w krotce.

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

lub

let (firstElement, secondElement) = answer 

Metoda 2

pomocą indeksu.

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

Metoda 3

używać nazw. Działa to oczywiście tylko wtedy, gdy elementy zostały nazwane w deklaracji Tuple.

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

po nauczenie się deklarować zmienne w Swift muszę powiedzieć, że metoda 1 naprawdę boli oczy – BigOmega

1

Próbowałem tego. Nie jest tak dobrze, ale działa ...

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

I to jest sposób użycia.

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

Używam Swift 2.2. – Lumialxk