2016-05-13 19 views
10

Nếu tôi có một tuple như thế nàySwift: Nhận một phần tử từ một tuple

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

Làm thế nào để có được một trong những yếu tố?

này không hoạt động:

answer["number"] 

Tôi mô hình câu hỏi này sau khi Swift: Get an array of element from an array of tuples, nhưng câu hỏi của tôi là một chút cơ bản hơn. Tôi đã tìm thấy câu trả lời được chôn cất trong documentation vì vậy tôi thêm câu trả lời của tôi dưới đây vào Q & Một định dạng để tìm kiếm nhanh hơn trong tương lai.

Trả lời

34

Theo số documentation (cuộn xuống Tuples), có ba cách để thực hiện.

Với

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

Phương pháp 1

Đặt yếu tố tên biến trong vòng một tuple.

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

hoặc

let (firstElement, secondElement) = answer 

Phương pháp 2

Sử dụng các chỉ số.

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

Phương pháp 3

Sử dụng tên. Điều này chỉ hoạt động, tất nhiên, nếu các phần tử được đặt tên trong khai báo Tuple.

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

sau khi tìm hiểu cách khai báo biến trong Swift Tôi phải nói rằng Phương pháp 1 thực sự làm tổn thương mắt mình – BigOmega

1

Tôi đã thử cách này. Nó không tốt lắm nhưng hoạt động ...

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

Và đây là cách sử dụng.

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

Tôi đang sử dụng Swift 2.2. – Lumialxk

Các vấn đề liên quan