Сделайте это менее двусмысленным:
print(geometryToAdd.reduce("Geometry add to map: ", {
$0 + $1.toString()
}))
Ошибка возникает из-за того, что вы можете только append()
к последовательности переменных: $0
является неизменным String
. В цикле str
был изменяемым: var
, а не let
.
Посмотрите на подпись reduce
func reduce<Result>(_ initialResult: Result, _ nextPartialResult: (Result, Element) throws -> Result) rethrows -> Result
nextPartialResult
- это функция / замыкание, которая принимает два аргумента и дает результат. Аргументы этой функции неизменны, они не являются inout
параметрами. Только inout
параметры могут быть изменены.
Подробнее об неизменяемости параметров функции здесь :
Параметры функции по умолчанию являются константами. Пытаясь изменить
значение параметра функции изнутри тела этой функции
приводит к ошибке времени компиляции.