Возможно, вы слышали, что мраморные диаграммы незаменимы, когда дело доходит до изучения Rx. Если вы работали с реактивным программированием или хотите переключиться на реактивное программирование для любого конкретного языка на RxJava, RxSwift, RxJS и т. Д., Скорее всего, у вас есть или встретятся диаграммы Marble.

Диаграммы Marble - это интерактивные диаграммы, которые показывают, как операторы Rx работают с наблюдаемыми последовательностями.

Давайте рассмотрим несколько примеров и выясним, как разобраться с концепциями Rx, используя Marble Diagrams.

Rx - это работа с наблюдаемыми последовательностями; вы работаете с ними, используя для них один или несколько операторов. Операторы - это методы различных наблюдаемых типов, которые обсуждались в моем блоге: Основные строительные блоки функционального реактивного программирования (FRP): IOS.

Рассмотрим этот пример:

Вы можете посетить RxMarbles.com, чтобы просмотреть и поиграть с мраморными диаграммами для большинства операторов Rx, которые вы найдете в RxSwift. Например, из предыдущей мраморной диаграммы вы можете увидеть, как работает оператор карты.

Элементы в верхней строке представляют элементы, испускаемые из наблюдаемой последовательности, а элементы в нижней строке представляют собой результирующую последовательность, то есть после вызова оператора с любыми параметрами указывается в исходной последовательности или в некоторых случаях на нескольких последовательностях.

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

Вертикальная линия в конце указывает, что последовательность завершилась обычным образом с помощью события завершения.

Возьмем еще один пример - на следующем изображении описан оператор слияния; функциональность показывает, что элементы, порожденные двумя наблюдаемыми последовательностями, будут объединены вместе в одну последовательность:

Перемещение любого из элементов по последовательности показывает, что слияние создаст объединенную последовательность в том порядке, в котором они были выпущены.

Вы можете увидеть это на следующей диаграмме:

Слияние происходит, когда элементы выделяются из наблюдаемых последовательностей. Диаграммы Marble также отображаются на веб-сайте ReactiveX, хотя некоторые из них не являются интерактивными.

Вот пример оператора catch с веб-сайта:

Фактически в RxSwift он называется оператором перехвата ошибок, но функциональность такая же. «X» означает, что наблюдаемая последовательность завершилась с ошибкой. В этом примере последовательность завершается ошибкой, но оператор catch вводит новую последовательность, которая вступит во владение и начнет генерировать свои собственные события вместо завершенного. Если вы хотите исследовать больше с помощью мраморных диаграмм с помощью приложения для iOS, вам повезло. Зайдите в магазин приложений и найдите RxMarbles; приложение построено на RxSwift, и самое удивительное то, что оно имеет открытый исходный код, и вы можете найти исходный код этого приложения на Github.

Веселое упражнение :): найдите ссылку на репозиторий Github для этого приложения. Так что наденьте шляпу гуглера и начните поиск! Я уверен, что найти его будет несложно.

Найдя библиотеку, вы можете загрузить проект, проверить код самостоятельно и запустить приложение в симуляторе IOS. После краткого знакомства вы можете просмотреть всех операторов. Также можно найти операторы, упомянутые ранее в этом разделе. Поиграйте с приложением, это интересный способ изучить эту важную концепцию. Вы можете отредактировать эти диаграммы, чтобы добавить элемент события или ошибки и посмотреть, как это повлияет на операторов. Это приложение незаменимо при изучении Rx.

За другими обновлениями вы можете следить за мной в Твиттере на моем твиттере @NavRudraSambyal

Чтобы подробно прочитать о концепциях Rx и RxSwift, вы можете перейти по ссылке на мою книгу Реактивное программирование в Swift 4.

Спасибо за чтение, поделитесь, если вы сочли полезным :)