Я отправляю вам короткий ответ, я приведу объяснение детали вскоре после:
let countryFlag = country.unicodeScalars.reduce("") { $0 + "\(UnicodeScalar(base + $1.value))" }
И теперь объяснение. Таким образом, во-первых, вы можете пропустить строку с добавляющим и непосредственно вернуть его в одном предложении:
let countryFlag = country.unicodeScalars.reduce("") { (var flag, code) in
return flag + "\(UnicodeScalar(base + code.value))"
}
После этого вы можете пропустить объявляя flag
и code
переменные, как они могут быть выведены в виде $0
и $1
:
let countryFlag = country.unicodeScalars.reduce("") {
return $0 + "\(UnicodeScalar(base + $1.value))"
}
И, наконец, если ваше закрытие состоит из одного оператора возврата, вы можете опустить return
ключевое слово. Я предпочитаю перемещать их по одной линии для лучшей читаемости:
let countryFlag = country.unicodeScalars.reduce("") { $0 + "\(UnicodeScalar(base + $1.value))" }
Я ценю ваше время, я застрял, пытаясь применить приложение на $ 0. Спасибо –
'append' ничего не возвращает (объявлено' void') - вместо этого он изменяет объект. Вот почему вы не можете использовать его внутри оператора return. Использование двоичного оператора '+' однако возвращает результат операции (без изменения объектов), и поэтому все в порядке. Если вы нашли мой ответ полезным, вы могли бы считать его принятым. Счастливый стремительный;) –