Ошибка возникает из-за того, что append()
принимает в качестве аргумента один элемент коллекции (здесь: один Character
), а не диапазон индекса.
Вы можете использовать +=
(или append(contentsOf:)
) и индекс с односторонним диапазоном для добавления «остатков» обеих строк к результату:
result += str1[str1Index...]
result += str2[str2Index...]
Проверка str1Index != str1.endIndex
необязательна, в этом случае диапазон пуст.
Цикл while также можно упростить: resultIndex
не требуется, если вы добавляете к строке result
:
var str1Index = str1.startIndex
var str2Index = str2.startIndex
var result = String()
while str1Index != str1.endIndex && str2Index != str2.endIndex {
result.append(str1[str1Index])
str1.formIndex(after: &str1Index)
result.append(str2[str2Index])
str2.formIndex(after: &str2Index)
}
result += str1[str1Index...]
result += str2[str2Index...]