2016-11-11 18 views
6

mam 2 Tablica typu Int jak toDodaj elementy dwóch macierzy ze sobą

let arrayFirst = [1,2,7,9] 
let arraySecond = [4,5,17,20] 

że chcemy dodać elementy każdego szeregu, jak arrayFirst [0] + arraySecond [0] arrayFirst [ 1] + arraySecond [1] Przykład itd i przypisywać je do innej tablicy, to wynik układu będzie jak

[5, 7, 24, 29]

co byłoby najlepsza praktyka do osiągnięcia tego przy użyciu swift3

Odpowiedz

14

Możesz dodać obie tablice jak ten

let arrayFirst = [1,2,7,9] 
let arraySecond = [4,5,17,20] 

let result = zip(arrayFirst, arraySecond).map(+) 
print(result) 
+1

Nie ma potrzeby korzystania 'flatMap', dodatek nie może przynieść' zerowe. Po prostu 'map (+)'. –

+0

@NishchalAndroid Zamknięcie użyte do mapy ma typ '(Int, Int) -> Int'. Operator '+' jest już zamknięciem typu '(Int, Int) -> Int'. Nie ma potrzeby owijać go w taki sposób. Po prostu użyj '.map (+)'. – Alexander

+0

@AlexanderMomchliov Tak, nie ma potrzeby, aby 'map {$ 1 + $ 0}' wystarczy użyć '.map (+)', Dzięki za poprawienie – Rajat

8
let arrayFirst = [1,2,7,9] 
let arraySecond = [4,5,17,20] 

Pierwszy zip(_:_:) je produkować sekwencję, która działa jak tablica par

let zipped = zip(arrayFirst, arraySecond) 
// zipped acts like [(1, 4), (2, 5), (7, 17), (9, 20)] 

Następnie map(_:) nad krotek, i zastosuj operator +:

let result = zipped.map(+) 
// result is [5, 7, 24, 29] 

Wszystko razem:

let result = zip(arrayFirst, arraySecond).map(+) 
+0

Po prostu nie rozumiem, dlaczego ludzie biorą udział w testach ... –

+0

Jest to prawdopodobnie dlatego, że niektórzy mogą postrzegać moją odpowiedź jako zryw @Rajat Odpowiedź i próba kradzieży rep. Dodałem jednak linki do dokumentacji i poprawiłem wywołanie mapy. Ja także głosowałem na Rajata. No cóż. – Alexander

+0

Tak ... Tak jak powiedziałeś ... Podążałem za tym pytaniem, a ponieważ rajat wprowadził zmiany w swojej odpowiedzi, dostałeś jedno spostrzeżenie. Quiet mylące, jak sobie z tym poradzić. –

Powiązane problemy