Как сложить кортежи вместе - PullRequest
0 голосов
/ 18 марта 2019

Как можно сложить целочисленные кортежи? Я наткнулся на этот пост , но я получаю сообщение об ошибке:

Тип аргумента '(Int, Int)' не соответствует ожидаемому типу 'Числовой'

Когда я пытаюсь использовать кортеж из массива. Я не знаком с дженериками, поэтому даже не знаю, с чего начать исправлять эту функцию, чтобы она соответствовала моему коду. Любой совет?

func calculate() {
    let testArray = [(0, 0), (0, 7), (7,7), (7,0)]
    let nearbyObjects = [(-1, -1), (0, -1), (1, -1), (-1, 0), (1, 0), (-1, 1), (0, 1), (1, 1)]
    // this is where I get the error message
    let sum = add(nearbyObjects[0])(testArray[0])
}

func add<T : Numeric>(_ a: T...) -> (_ b: T...) -> [T] {
    return { (b: T...) -> [T] in
        return zip(a, b).map { $0.0 + $0.1 }
    }
}

В идеале я хотел бы иметь возможность добавить два кортежа из массива выше. Итак, (7,7) + (1, -1) = (8, 6)

1 Ответ

1 голос
/ 18 марта 2019

Попробуйте это:

func +<T : Numeric>(_ a: (T, T), _ b: (T, T)) -> (T, T) {
  return (a.0 + b.0, a.1 + b.1)
}

let result = (7, 7) + (1, -1)
print(result) // (8, 6)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...