„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Zip-Optionen in Effect-TS: Ein praktischer Leitfaden

Zip-Optionen in Effect-TS: Ein praktischer Leitfaden

Veröffentlicht am 07.11.2024
Durchsuche:599

Zipping Options in Effect-TS: A Practical Guide

Zip-Optionen in Effect-TS: Ein praktischer Leitfaden

In der funktionalen Programmierung ist die sichere und vorhersehbare Kombination mehrerer optionaler Werte (dargestellt als Optionen) eine häufige Aufgabe. Effect-TS bietet mehrere Methoden zum „Komprimieren“ von Optionen, sodass Sie deren Werte kombinieren oder einen Wert basierend auf bestimmten Regeln auswählen können. In diesem Artikel untersuchen wir drei Schlüsselfunktionen für Zip-Optionen: O.zipRight, O.zipLeft und O.zipWith.

Beispiel 1: Rückgabe der zweiten Option mit O.zipRight

Konzept

Mit der Funktion O.zipRight können Sie zwei Optionen kombinieren, indem Sie die erste verwerfen und die zweite zurückgeben. Dieser Vorgang ist erfolgreich, wenn beide Optionen „Some“ sind; andernfalls wird None zurückgegeben.

Code

function zipping_ex01() {
  const some1 = O.some(1); // Create an Option containing the value 1
  const some2 = O.some(2); // Create an Option containing the value 2
  const none = O.none(); // Create an Option representing no value

  console.log(pipe(some1, O.zipRight(some2))); // Output: Some(2) (returns the second Option)
  console.log(pipe(some1, O.zipRight(none))); // Output: None (since the second Option is None)
  console.log(pipe(none, O.zipRight(some2))); // Output: None (since the first Option is None)
}

Erläuterung

  • pipe(some1, O.zipRight(some2)): Sowohl some1 als auch some2 sind Some, daher gibt die Funktion die zweite Option zurück, nämlich Some(2).
  • pipe(some1, O.zipRight(none)): Da die zweite Option None ist, gibt die Funktion None zurück.
  • pipe(none, O.zipRight(some2)): Die erste Option ist None, daher gibt die Funktion None zurück, unabhängig von der zweiten Option.

Diese Funktion ist besonders nützlich, wenn Sie eine Operation ausführen möchten, bei der das Ergebnis ausschließlich von der zweiten Option abhängt.

Beispiel 2: Rückgabe der ersten Option mit O.zipLeft

Konzept

Die Funktion O.zipLeft ist das Gegenstück zu O.zipRight und ermöglicht es Ihnen, zwei Optionen zu kombinieren, während Sie die zweite verwerfen und die erste zurückgeben. Auch dieser Vorgang ist erfolgreich, wenn beide Optionen „Some“ sind; andernfalls wird None zurückgegeben.

Code

function zipping_ex02() {
  const some1 = O.some(1); // Create an Option containing the value 1
  const some2 = O.some(2); // Create an Option containing the value 2
  const none = O.none(); // Create an Option representing no value

  console.log(pipe(some1, O.zipLeft(some2))); // Output: Some(1) (returns the first Option)
  console.log(pipe(some1, O.zipLeft(none))); // Output: None (since the second Option is None)
  console.log(pipe(none, O.zipLeft(some2))); // Output: None (since the first Option is None)
}

Erläuterung

  • pipe(some1, O.zipLeft(some2)): Da beide Optionen Some sind, gibt die Funktion die erste Option zurück, nämlich Some(1).
  • pipe(some1, O.zipLeft(none)): Die zweite Option ist None, daher gibt die Funktion None zurück.
  • pipe(none, O.zipLeft(some2)): Da die erste Option None ist, gibt die Funktion None zurück.

Diese Funktion ist nützlich, wenn das Ergebnis durch die erste Option bestimmt werden soll, Sie aber dennoch sicherstellen möchten, dass die zweite Option gültig ist.

Beispiel 3: Kombinieren von Optionen mit einer Funktion mithilfe von O.zipWith

Konzept

Die Funktion O.zipWith bietet die größte Flexibilität und ermöglicht es Ihnen, die Werte zweier Optionen mithilfe einer bereitgestellten Funktion zu kombinieren. Wenn beide Optionen Some sind, wird die Funktion angewendet und das Ergebnis in eine neue Option eingeschlossen. Wenn eine der Optionen None ist, gibt die Funktion None zurück.

Code

function zipping_ex03() {
  const some1 = O.some(1); // Create an Option containing the value 1
  const some2 = O.some(2); // Create an Option containing the value 2
  const none = O.none(); // Create an Option representing no value
  const add = (a: number, b: number) => a   b;

  console.log(pipe(some1, O.zipWith(some2, add))); // Output: Some(3) (since 1   2 = 3)
  console.log(pipe(some1, O.zipWith(none, add))); // Output: None (since the second Option is None)
  console.log(pipe(none, O.zipWith(some2, add))); // Output: None (since the first Option is None)
}

Erläuterung

  • pipe(some1, O.zipWith(some2, add)): Beide Optionen sind Some, daher wird die Add-Funktion angewendet, was zu Some(3) führt.
  • pipe(some1, O.zipWith(none, add)): Da die zweite Option None ist, gibt die Funktion None zurück.
  • pipe(none, O.zipWith(some2, add)): Die erste Option ist None, daher gibt die Funktion None zurück.

Diese Funktion ist ideal, wenn Sie eine Operation mit den Werten von zwei Optionen durchführen müssen, da sie sicherstellt, dass beide Werte vorhanden sind, bevor die Operation ausgeführt wird.

Abschluss

Zipping-Optionen in Effect-TS sind eine leistungsstarke Möglichkeit, optionale Werte sicher zu kombinieren. Unabhängig davon, ob Sie an der ersten Option, der zweiten oder einer Kombination aus beiden interessiert sind, bieten die Funktionen O.zipRight, O.zipLeft und O.zipWith die Tools, die Sie zur effizienten Bewältigung dieser Szenarios benötigen. Durch das Verstehen und Anwenden dieser Muster können Sie robusteren und vorhersehbareren Funktionscode schreiben.

Freigabeerklärung Dieser Artikel ist abgedruckt unter: https://dev.to/almaclaine/zipping-options-in-effect-ts-a-practical-guide-72h?1 Bei Verstößen wenden Sie sich bitte an [email protected], um ihn zu löschen Es
Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3