1 Pregunta: Cómo agregar tuplas juntas

pregunta creada en Sun, Mar 17, 2019 12:00 AM

¿Cómo se pueden agregar tuplas enteras? Encontré esta publicación , pero recibo un error:

  

El tipo de argumento '(Int, Int)' no se ajusta al tipo esperado 'Numérico'

Cuando intento usar una tupla que tengo dentro de una matriz. No estoy familiarizado con los genéricos, así que ni siquiera estoy seguro de dónde comenzar a corregir esta función para que se ajuste a mi código. ¿Algún consejo?

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 }
    }
}

Lo ideal sería poder agregar dos tuplas de la matriz anterior. Entonces, (7,7) + (1, -1) = (8, 6)

    
0
1 Respuestas                              1                         

Prueba esto:

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)
    
1
2019-03-17 23: 02: 17Z
  1. Está devolviendo el mensaje de error "El operador miembro '+' debe tener al menos un argumento de tipo 'MyClass'"
    2019-03-17 23: 15: 01Z
  2. @ LTC Debes poner este método fuera de cualquier tipo (es decir, clases, estructuras, protocolos) que tengas.
    2019-03-17 23: 17: 07Z
fuente colocada aquí