Heim > Web-Frontend > js-Tutorial > Hauptteil

Optionssequenzierung in Effect-TS verstehen

王林
Freigeben: 2024-08-29 11:35:13
Original
302 Leute haben es durchsucht

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)
}
Nach dem Login kopieren

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 zur Verarbeitung verschachtelter Optionen durch Entfernen einer Verschachtelungsebene. Dies ist nützlich, wenn Ihre Operationen zu einer Option von Option führen und Sie diese zu einer einzigen 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)
}
Nach dem Login kopieren

Erläuterung

  • pipe(nestedSome, O.flatten): Dadurch wird die Option von Option zu einer einzelnen Option abgeflacht, was zu Some(1) führt.
  • pipe(nestedNone, O.flatten): Die innere Option ist None, daher führt das Abflachen 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<number> => {
    const n = parseInt(s, 10);
    return isNaN(n) ? O.none() : O.some(n);
  };

  const doubleIfPositive = (n: number): O.Option<number> =>
    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)
}
Nach dem Login kopieren

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äß bewältigen und gleichzeitig eine klare und lesbare Logik beibehalten.

Das obige ist der detaillierte Inhalt vonOptionssequenzierung in Effect-TS verstehen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:dev.to
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!