Effect-TS bietet eine leistungsstarke Möglichkeit, Vorgänge im Optionskontext mithilfe der Do-Notation zu verarbeiten. In diesem Artikel wird untersucht, wie mehrere Vorgänge mit der Do-Notation sequenziert werden, und verschiedene Szenarios anhand von Beispielen demonstriert.
In diesem Beispiel binden wir Werte innerhalb des Optionskontexts, berechnen eine Summe und filtern basierend auf einer Bedingung.
import { Option as O, pipe } from 'effect'; function do_ex01() { const result = pipe( O.Do, O.bind('x', () => O.some(2)), // Bind x to the value 2 wrapped in Some O.bind('y', () => O.some(3)), // Bind y to the value 3 wrapped in Some O.let('sum', ({ x, y }) => x + y), // Let sum be the sum of x and y O.filter(({ x, y }) => x * y > 5) // Filter the result if x * y > 5 ); console.log(result); // Output: Some({ x: 2, y: 3, sum: 5 }) (since 2 * 3 > 5) }
Erklärung:
Die Ausgabe ist Some({ x: 2, y: 3, sum: 5 }), weil die Bedingung 2 * 3 > 5 ist erfüllt.
Dieses Beispiel zeigt, dass das Ergebnis „Keine“ ist, wenn die Filterbedingung fehlschlägt.
function do_ex02() { const result = pipe( O.Do, O.bind('x', () => O.some(1)), // Bind x to the value 1 wrapped in Some O.bind('y', () => O.some(2)), // Bind y to the value 2 wrapped in Some O.let('sum', ({ x, y }) => x + y), // Let sum be the sum of x and y O.filter(({ x, y }) => x * y > 5) // Filter the result if x * y > 5 ); console.log(result); // Output: None (since 1 * 2 <= 5) }
Erklärung:
Die Ausgabe ist „Keine“, da die Bedingung 1 * 2 <= 5 fehlschlägt.
Dieses Beispiel zeigt, dass, wenn eine Bindung None ist, das Ergebnis None ist.
function do_ex03() { const result = pipe( O.Do, O.bind('x', () => O.some(2)), // Bind x to the value 2 wrapped in Some O.bind('y', () => O.none()), // Bind y to None O.let('sum', ({ x, y }) => x + y), // This line won't execute since y is None O.filter(({ x, y }) => x * y > 5) // This line won't execute since y is None ); console.log(result); // Output: None (since y is `None`) } </p>
Erklärung:
Die Ausgabe ist „None“, da eine der Bindungen (y) „None“ ist.
Die do-Notation in Effect-TS ermöglicht eine elegante und lesbare Reihenfolge von Operationen innerhalb des Option-Kontexts. Durch das Binden von Werten, das Zulassen berechneter Werte und das Filtern basierend auf Bedingungen können wir komplexe optionale Logik auf einfache Weise handhaben. Die obigen Beispiele veranschaulichen, wie sich das Ergebnis je nach unterschiedlichen Bedingungen und dem Vorhandensein von None ändert.
Das obige ist der detaillierte Inhalt vonVerwendung der do-Notation in Effect-TS Optionals. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!