Swift:从元组中获取元素

时间:2016-05-13 02:10:17

标签: swift tuples

如果我有这样的元组

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

我如何获得其中一个元素?

这不起作用:

answer["number"]

我在Swift: Get an array of element from an array of tuples之后对这个问题进行了建模,但我的问题更为基础。我确实找到了documentation中的答案,所以我在下面以Q& A格式添加我的答案,以便将来加快搜索速度。

2 个答案:

答案 0 :(得分:58)

根据documentation(向下滚动到元组),有三种方法可以做到。

鉴于

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

方法1

将元素变量名称放在元组中。

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

let (firstElement, secondElement) = answer

方法2

使用索引。

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

方法3

使用名称。当然,只有在元组声明中命名元素时,这才有效。

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

答案 1 :(得分: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"]