Swift 4访问元组通过键

时间:2018-11-13 12:36:33

标签: swift tuples

说我有一个返回tuple的方法,并且该元组有一个键。如何使用键而不是索引或位置访问该元组?

import Cocoa

func getValues() -> (Int, Int) {
    return (firstVal: 1, secondVal: 2)
}

let result = getValues()
print(result)
print(result.firstVal)

在上面的print(result)中返回元组,减去键,然后print(result.firstVal)抛出错误。

error: Tuples.playground:3:7: error: value of tuple type '(Int, Int)' has no member 'firstVal'
print(result.firstVal)
      ^      ~~~~~~~~

2 个答案:

答案 0 :(得分:5)

您还需要在功能签名中包含标签。

func getValues() -> (firstVal: Int,secondVal: Int) {
    return (firstVal: 1, secondVal: 2)
}

最好为您的自定义元组定义一个typealias

typealias ValueTuple = (firstVal: Int,secondVal: Int)

func getValues() -> ValueTuple {
    return (firstVal: 1, secondVal: 2) // or even return (1,2) works
}

答案 1 :(得分:0)

只是一个建议。

我建议使用结构而不是元组。

struct易于扩展。例如。可以在struct内部实现功能。

唯一有用的功能是从该函数返回多个结果。

这就是为什么

struct ValueStruct {
let firstVal: Int
let secondVal: Int
}

func getValues() -> ValueStruct {
    return ValueStruct(firstVal: 1, secondVal: 2)
}