Programmation fonctionnelle réactive

Programmation fonctionnelle réactive

image

La programmation réactive fonctionnelle est un paradigme de programmation. Il s'agit d'une méthode de programmation qui manipule les séquences de données en créant des fonctions, puis répond à ces séquences. Il combine programmation fonctionnelle et programmation réactive

La programmation fonctionnelle est un paradigme de programmation qui nous oblige à passer des fonctions comme paramètres ou à les renvoyer comme valeurs de retour. Nous pouvons obtenir le résultat souhaité en combinant différentes fonctions.

Avantages de la programmation d'essai fonctionnel

  • Flexible
  • Réutilisation élevée
  • Concis
  • Facile à entretenir
  • Adaptez-vous aux différents besoins

Programmation fonctionnelle-> Programmation fonctionnelle réactive

Considérez un événement de clic de bouton comme une séquence:

image

// 假设用户在进入页面到离开页面期间,总共点击按钮 3 次

// 按钮点击序列
let taps: Array<Void> = [(), (), ()]
 // 每次点击后弹出提示框 taps.forEach { showAlert() }

Il est idéal pour gérer les événements de clic de cette manière, mais le problème est que les éléments (événements de clic) de cette séquence sont générés de manière asynchrone. Les séquences traditionnelles ne peuvent pas décrire la situation dans laquelle ces éléments sont générés de manière asynchrone. Afin de résoudre ce problème, une séquence écoutable Observable a été générée. C'est aussi une séquence, mais les éléments de cette séquence peuvent être générés de manière synchrone ou asynchrone:

image

// 按钮点击序列
let taps: Observable<Void> = button.rx.tap.asObservable()

// 每次点击后弹出提示框
taps.subscribe(onNext: { showAlert() })

Ici, taps est la séquence d'événements de clic de bouton. Ensuite, nous répondons à chaque événement de clic en faisant apparaître une boîte de dialogue. Cette méthode de programmation est appelée programmation réactive. Nous combinons la programmation fonctionnelle et la programmation réactive pour obtenir une programmation réactive fonctionnelle:

image

passwordOutlet.rx.text.orEmpty
    .map { $0.characters.count >= minimalPasswordLength }
    .bind(to: passwordValidOutlet.rx.isHidden)
    .disposed(by: disposeBag)

Nous utilisons différentes fonctions de construction pour créer la séquence de données requise. Enfin, répondez à cette séquence de manière appropriée. Il s'agit d'une programmation réactive fonctionnelle.

Liaison de données (abonnement)

image

Un concept important dans RxSwift est la liaison de données (abonnement). Cela signifie lier la séquence écoutable à l'observateur:

Comparons ces deux morceaux de code:

let image: UIImage = UIImage(named: ...)
imageView.image = image


let image: Observable<UIImage> = ... image.bind(to: imageView.rx.image) 

Nous connaissons très bien le premier morceau de code, qui consiste à définir une seule image sur l'imageView.

Le deuxième morceau de code "synchronise" une séquence d'images avec l'imageView. Les images de cette séquence peuvent être générées de manière asynchrone. L'image définie ici est la partie bleue de l'image ci-dessus (vous pouvez surveiller la séquence), et imageView.rx.image est la partie orange de l'image ci-dessus (l'observateur). Et ce «mécanisme de synchronisation» est la liaison de données (abonnement).

Je suppose que tu aimes

Origine www.cnblogs.com/liuxiaokun/p/12680485.html
conseillé
Classement