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"]