【问题标题】:Swift: Get an element from a tupleSwift:从元组中获取元素
【发布时间】:2016-09-09 01:40:34
【问题描述】:

如果我有这样的元组

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

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

这不起作用:

answer["number"]

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

【问题讨论】:

    标签: swift tuples


    【解决方案1】:

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

    给定

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

    方法一

    将元素变量名放在一个元组中。

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

    let (firstElement, secondElement) = answer
    

    方法二

    使用索引。

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

    方法3

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

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

    【讨论】:

    • 在学习了如何在Swift中声明变量之后我不得不说方法1真的很伤我的眼睛
    【解决方案2】:

    我试过这个。它不是那么好,但工作......

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

    【讨论】:

      猜你喜欢
      • 2014-12-19
      • 2021-06-29
      • 2020-03-11
      • 2015-01-31
      • 2011-11-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-12-17
      相关资源
      最近更新 更多