Набор доступа Swift 4 по ключу - PullRequest
0 голосов
/ 13 ноября 2018

Скажем, у меня есть метод, который возвращает 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 голосов
/ 13 ноября 2018

Просто предложение.

Я бы предложил использовать структуру вместо кортежа.

struct очень легко масштабировать. Например. может реализовывать функции внутри struct.

Единственная полезная функция - вернуть несколько результатов из функции.

Вот почему

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

func getValues() -> ValueStruct {
    return ValueStruct(firstVal: 1, secondVal: 2)
}
0 голосов
/ 13 ноября 2018

Также необходимо включить метки в сигнатуру функции.

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
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...