Как стать автором
Обновить

Комментарии 8

Сейчас потихоньку осваиваю Rust и что-то не увидел сейчас вообще ни одного отличия :) Даже синтаксис похож :)

Раст маленький и быстрый, Свифт большой и медленный. Свифт настолько богат фичами, что можно взять любой другой язык и сказать что он похож на свифт.
Спасибо за статью, понял что такое ФП.
Поправьте меня, если я ошибаюсь, но map использовать как в последнем сниппете — очень неоднозначная затея, потому что map должен преобразовывать данные, а в данном случае он просто вызывает функцию.
Вы правы, это неоднозначно. Auth возвращает объект, осуществляющий запрос к серверу. Он игнорируется в примере. Можно рассматривать это как преобразование данных. Но для читаемости, можно использовать явное извлечение.

Да, я лучше бы предпочёл использовать “guard let” или “if let” формы. Функции .map предназначаются для трансформированная данных, а не для безопасного извлечения optionals.


Да выглядит красиво и коротко, но скажем в большой команде только путать ваших коллег будет.

perform можно реализовать короче (хотя без опыта ФП будет менее понятно):


a.map { x in b.map { transform(x, $0) }}
Да, разумеется. Только вот так:

return try optional1.flatMap { x in try optional2.map { try transform(x, $0) }}

Использовал явное извлечение, как раз что бы сделать функцию более понятной.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий