Почти два года назад Робот Наташа опубликовала небольшой блог о сопоставлении с образцом в случае if. Хотя это было потрясающее вступление к if case
, это было всего лишь вступление.
К концу этого блога вы сможете сопоставлять и фильтровать круги среди тех, кто не case
пользуется услугами коллег.
Пример
VTS - это компания, занимающаяся технологиями в сфере коммерческой недвижимости, и поэтому мы будем использовать пример на тему строительства.
В приведенном выше примере у нас есть несколько типов зданий со связанными значениями. Перечисления со связанными значениями действительно могут очистить class
тесно связанные объекты - и уберечь вас от ошибок в ваших конечных автоматах.
Выше приведен эквивалент примера Наташи - простой и по существу. Это позволяет нам сопоставлять перечисления на основе одного случая и создавать локализованную переменную поля, с которым мы хотим работать. Это позволяет нам включить один случай перечисления без использования подробного switch
с default
. У нас также может быть условное сопоставление на основе внутренних полей:
Поскольку мы можем использовать if case let
, мы также можем использовать guard case let
аналогичным образом. Но, что наиболее важно, мы можем объединить это с for
циклом:
Таким образом, комбинируя его с циклом for
, мы можем фильтровать и сопоставлять коллекцию. Это позволяет нам применять мощные методы фильтрации в удобной для чтения форме.
Дальнейшее чтение
Подбери меня, если сможешь, от AppVenture
Оператор сопоставления шаблонов, Swift Documentation
Быстрое сопоставление с образцом, Оле Бегеманн
Чтобы узнать больше, подпишитесь на меня на Medium или в Twitter @_hsalman