„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 > Optionssequenzierung in Effect-TS verstehen

Optionssequenzierung in Effect-TS verstehen

Veröffentlicht am 07.11.2024
Durchsuche:806

Understanding Option Sequencing in Effect-TS

Beispiel 1: Ignorieren des ersten Werts mit O.andThen

Konzept

Mit der Funktion O.andThen können Sie eine Folge von zwei Optionen ausführen, wobei das Ergebnis ausschließlich durch die zweite Option bestimmt wird. Dies ist nützlich, wenn die erste Option einen Zweck erfüllt, ihr Wert jedoch in nachfolgenden Vorgängen nicht benötigt wird.

Code

function sequencing_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.andThen(some2))); // Output: Some(2) (ignores 1 and returns 2)
  console.log(pipe(none, O.andThen(some2))); // Output: None (since the first Option is None)
}

Erläuterung

  • pipe(some1, O.andThen(some2)): Hier enthält some1 den Wert 1, aber die Operation ignoriert ihn und gibt some2 zurück, das 2 enthält.
  • pipe(none, O.andThen(some2)): Da die erste Option None ist, schließt die Operation kurz und gibt None zurück.

Dieser Sequenzierungsvorgang ist besonders nützlich, wenn Sie Vorgänge verketten möchten, aber nur am Ergebnis des zweiten Vorgangs interessiert sind.

Beispiel 2: Verschachtelte Optionen mit O.flatten reduzieren

Konzept

Die O.flatten-Funktion dient dazu, verschachtelte Optionen zu verarbeiten, indem eine Verschachtelungsebene entfernt wird. Dies ist nützlich, wenn Ihre Operationen zu einer Option von Option führen und Sie diese in eine einzige Option vereinfachen müssen.

Code

function sequencing_ex02() {
  const nestedSome = O.some(O.some(1)); // Create a nested Option containing the value 1
  const nestedNone = O.some(O.none()); // Create a nested Option representing no value
  const none = O.none(); // Create an Option representing no value

  console.log(pipe(nestedSome, O.flatten)); // Output: Some(1) (flattens the nested Option)
  console.log(pipe(nestedNone, O.flatten)); // Output: None (flattens to None)
  console.log(pipe(none, O.flatten)); // Output: None (since the outer Option is None)
}

Erläuterung

  • pipe(nestedSome, O.flatten): Dies reduziert die Option von Option auf eine einzelne Option, was zu Some(1) führt.
  • pipe(nestedNone, O.flatten): Die innere Option ist None, daher führt die Reduzierung zu None.
  • pipe(none, O.flatten): Wenn die äußere Option None ist, hat die Reduzierung keine Auswirkung und es wird None zurückgegeben.

Eine Reduzierung ist wichtig, wenn es um Funktionen geht, die möglicherweise verschachtelte Optionen zurückgeben, damit Sie das Ergebnis in einen einzelnen Optionswert zusammenfassen können.

Beispiel 3: Verfassen von Optionen zurückgebenden Funktionen mit O.composeK

Konzept

Mit der O.composeK-Funktion können Sie zwei Funktionen zusammenstellen, die eine Option zurückgeben, und so eine Pipeline erstellen, in der die Ausgabe der ersten Funktion in die zweite eingespeist wird. Dies ist besonders nützlich für die Verkettung von Vorgängen, die möglicherweise fehlschlagen und zu None führen.

Code

function sequencing_ex03() {
  const parseNumber = (s: string): O.Option => {
    const n = parseInt(s, 10);
    return isNaN(n) ? O.none() : O.some(n);
  };

  const doubleIfPositive = (n: number): O.Option =>
    n > 0 ? O.some(n * 2) : O.none();

  const parseAndDouble = pipe(parseNumber, O.composeK(doubleIfPositive));

  console.log(parseAndDouble('42')); // Output: Some(84) (parses and doubles the number)
  console.log(parseAndDouble('-1')); // Output: None (since -1 is not positive)
  console.log(parseAndDouble('abc')); // Output: None (since 'abc' is not a number)
}

Erläuterung

  • parseAndDouble('42'): Die Zeichenfolge „42“ wurde erfolgreich in eine Zahl geparst, und da sie positiv ist, wird sie verdoppelt, was zu Some(84) führt.
  • parseAndDouble('-1'): Die Zeichenfolge '-1' wird analysiert, aber da sie negativ ist, gibt die Funktion None zurück.
  • parseAndDouble('abc'): Die Zeichenfolge 'abc' kann nicht als Zahl geparst werden, daher gibt die Funktion None zurück.

Durch das Verfassen von Option-Return-Funktionen können Sie komplexe Operationsketten erstellen und gleichzeitig Fälle sicher behandeln, in denen jeder Schritt in der Kette fehlschlagen kann.

Abschluss

Diese Beispiele veranschaulichen die Vielseitigkeit und Leistungsfähigkeit des Option-Typs in Effect-TS für die Verarbeitung von Operationssequenzen. Unabhängig davon, ob Sie Werte mit O.andThen ignorieren, verschachtelte Optionen mit O.flatten reduzieren oder Vorgänge mit O.composeK erstellen, können Sie mit diesen Mustern optionale Werte in einem funktionalen Programmierkontext effektiver verwalten. Durch die Nutzung dieser Techniken können Sie robusteren und prägnanteren Code schreiben und so sicherstellen, dass Vorgänge das Fehlen von Werten ordnungsgemäß verarbeiten und gleichzeitig eine klare und lesbare Logik beibehalten.

Freigabeerklärung Dieser Artikel ist abgedruckt unter: https://dev.to/almaclaine/understanding-option-sequencing-in-effect-ts-22g7?1 Bei Verstößen wenden Sie sich bitte an [email protected], um ihn zu löschen
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