Swift:从元组中获取元素

Swift:从元组中获取元素,swift,tuples,Swift,Tuples,如果我有这样一个元组 var answer: (number: Int, good: Bool) 如何获取其中一个元素 这不起作用: answer["number"] 我在后面为这个问题建模,但我的问题更基本一些。我确实在中找到了答案,因此我在下面以问答形式添加了我的答案,以便将来更快地搜索。根据(向下滚动到元组),有三种方法 给定 方法1 将元素变量名放入元组中 let (firstElement, _) = answer let (_, secondElement) = answer

如果我有这样一个元组

var answer: (number: Int, good: Bool)
如何获取其中一个元素

这不起作用:

answer["number"]
我在后面为这个问题建模,但我的问题更基本一些。我确实在中找到了答案,因此我在下面以问答形式添加了我的答案,以便将来更快地搜索。

根据(向下滚动到元组),有三种方法

给定

方法1

将元素变量名放入元组中

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

方法2

使用索引

let firstElement = answer.0
let secondElement = answer.1
方法3

使用名称。当然,这只适用于在元组声明中命名元素的情况

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

我试过这个。这不是很好,但很有效

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
        }
    }
}
这就是如何使用

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

我正在使用Swift 2.2。在学习了如何在Swift中声明变量之后,我不得不说方法1真的伤害了我的眼睛
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
        }
    }
}
let answer = Answer(value: (120, false))
answer["number"]