Pull to refresh

Comments 6

Казалось бы, чего стоило заодно и вторую перегрузку переименовать, но, видимо, пока нет конфликтов на логику пофиг.
В том, что вторая перегрузка тоже разрешает проблему optional типов как и бывшая третья.
Тут дело не сколько в опциональности, сколько в неверном использовании flatMap. Многие люди использовали flatMap в контексте, где стоило бы использовать map, а из-за обобщенности протокола Collection такое поведение еще и могло поменяться в Swift 4.0 (а возможно и еще в будущем).
А вот вторая перегрузка вряд ли сможет столкнуться с такой проблемой.
Если помнить что Optional по сути монада, то вторая и первая «перегрузка» идентичны.
(map каждого элемента в коллекцию с последующим объединением всех коллекций)
Для второй перегрузки выбран не лучший пример: он не показывает разницы между map и flatMap
Более хороший вариант (внимание на вложенность оптионалов):
func magic(_ a: Int) -> Int? { ... }
let a: Int? = 1
let mapA = a.map { magic($0) } // Int??
let flatMapA = a.flatMap { magic($0) } // Int?
Sign up to leave a comment.