Что нового в Swift 4.2

Оглавление

  1. Bool.toggle
  2. Алгоритмы для Sequence и Collection
  3. Перечисление всех cases enum
  4. Случайные числа
  5. Hashable redesign
  6. Условное соответствие (протоколам)
  7. Dynamic member lookup
  8. #error and #warning
  9. MemoryLayout.offset(of:)
  10. @inlinable
  11. Immutable withUnsafePointer

Требования

Этому playground требуется Xcode 10 или свежий слепок Swift 4.2. Скачать Xcode 10 beta можно здесь а слепок Swift 4.2 здесь.

Обратите внимание

Этот playground фокусируется на новых, ориентированных на программистов особенностях, которые могут быть легко продемонстрированы в формате playground. Swift 4.2 содержит гораздо больше изменений, чем перечислено здесь. Под капотом Swift 4.2 множество усовершенствований, в том числе новые возможности Swift Package Manager.

Взгляните на полный список изменений (changelog), а также на полный список реализованных в Swift 4.2 предложений (который содержит ряд предложений реализованных, но не упомянутых в changelog).

Читать далее

Сказ о том как один из flatMap превратился в compactMap

Swift совмещает возможности объектно-ориентированного и функционального программирования. Если объектно-ориентированная часть оттачивалась десятилетиями на Objective-C и вошла составной частью в SwiftObjective-C и Swift практически одинаковый SDK), то часть, связанная с функциональным программированием продолжает оставаться в тени, изредка «поблескивая» отдельными довольно простыми решениями. Но вот появился прекрасный ресурс pointfree.co, посвященный исключительно функциональному программированию в Swift. Мы решили воспользоваться этим и представить вашему вниманию перевод бесплатного фрагмента, касающегося переименования одной из перегрузок (overload) функции высшего порядка flatMap в compactMap. Но это лишь повод для того, чтобы вы смогли проследить ход мысли программистов, заточенных на функциональное программирование. Столкнувшись с переименованием перегрузки (overload) функции обычный один программист лишь испытает раздражение, другой проведет методичный, но узкий анализ причины этого переименования, а гуру по функциональному программированию может сделать пару любопытных открытий, элегантно дополняющих арсенал функционального программирования на Swift.

Swift 4.1 упразднил и переименовал определенную перегрузку (overload) функции flatMap. Что делает этот flatMap отличным от других? Мы исследуем это и в результате увидим, как понимание этого различия поможет нам изучить обобщение этой операции над другими структурами и получить новый полезный код!

Читать далее