let a = "abc"
let b = "def"
let c = zip(a,b).reduce("") { (result, arg1) in
let (char1, char2) = arg1
return result + "\(char1)\(char2)"
}
print(c)//adbecf
короче
let c = zip(a,b).reduce("") { $0 + "\($1.0)\($1.1)" }
print(c)
Использование zip (: :) с двумя строками неравной длины приведет к игнорированию оставшихся строк.
let a = "12345"
let b = "67"
let c = zip(a,b).reduce("") { $0 + "\($1.0)\($1.1)" }
print(c)//"1627"--> 345 is ignored
Чтобы исправить это, используйте
if a.count > b.count {
c = c + String(a[b.endIndex...])
} else if b.count > a.count {
c = c + String(b[a.endIndex...])
}
print(c)//"1627345"