Heim > Web-Frontend > js-Tutorial > Zuordnungsoperationen in Effect-TS Optionals

Zuordnungsoperationen in Effect-TS Optionals

PHPz
Freigeben: 2024-07-23 11:59:13
Original
346 Leute haben es durchsucht

Mapping Operations in Effect-TS Optionals

In Effect-TS können verschiedene Zuordnungsfunktionen auf die Werte innerhalb einer Option angewendet werden, um die enthaltenen Werte zu transformieren, zu ersetzen oder zu manipulieren. In diesem Artikel werden verschiedene Mapping-Funktionen von Effect-TS anhand praktischer Beispiele erläutert.

Beispiel 1: Grundlegendes Mapping mit O.map

Verwenden Sie O.map, um eine Transformationsfunktion auf den Wert innerhalb einer Option anzuwenden. Wenn die Option Some ist, wird die Funktion angewendet; andernfalls ist das Ergebnis None.

import { Option as O, pipe } from 'effect';

function mapping_ex01() {
  const some = O.some(1); // Create an Option containing the value 1
  const none = O.none(); // Create an Option representing no value
  const increment = (n: number) => n + 1;

  console.log(pipe(some, O.map(increment))); // Output: Some(2) (since some contains 1 and 1 + 1 = 2)
  console.log(pipe(none, O.map(increment))); // Output: None (since none is None)
}
Nach dem Login kopieren

Beispiel 2: Abbildung auf einen konstanten Wert mit O.as

Verwenden Sie O.as, um den Wert innerhalb der Option durch einen bereitgestellten konstanten Wert zu ersetzen.

import { Option as O, pipe } from 'effect';

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

  console.log(pipe(some, O.as('replaced'))); // Output: Some('replaced') (replaces 1 with 'replaced')
  console.log(pipe(none, O.as('replaced'))); // Output: None (since none is None)
}
Nach dem Login kopieren

Erläuterung:

  1. Optionen erstellen: Wir erstellen zwei Optionen, eine mit einem Wert (einige mit 1) und eine andere, die keinen Wert darstellt (keine).
  2. O.as anwenden: Wir verwenden O.as, um den Wert innerhalb der Option durch den konstanten Wert „replaced“ zu ersetzen.

Die Ausgabe ist „Some('replaced“) für die Option „some“ und „None“ für die Option „none“ und zeigt, wie O.as den ursprünglichen Wert, falls vorhanden, effektiv ersetzt.

Beispiel 3: Zuordnung zu void mit O.asVoid

Verwenden Sie O.asVoid, um den Wert innerhalb der Option durch undefiniert zu ersetzen.

import { Option as O, pipe } from 'effect';

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

  console.log(pipe(some, O.asVoid)); // Output: Some(undefined) (replaces 1 with undefined)
  console.log(pipe(none, O.asVoid)); // Output: None (since none is None)
}
Nach dem Login kopieren

Erklärung:

  1. Optionen erstellen: Wir erstellen zwei Optionen, eine mit einem Wert (einige mit 1) und eine andere, die keinen Wert darstellt (none).
  2. Anwenden von O.asVoid: Wir verwenden O.asVoid, um den Wert innerhalb der Option durch undefiniert zu ersetzen.

Die Ausgabe ist „Some(undefiniert)“ für die Option „some“ und „None“ für die Option „none“ und zeigt, wie O.asVoid den ursprünglichen Wert, falls vorhanden, effektiv ersetzt.

Beispiel 4: FlatMapping mit O.flatMap

Verwenden Sie O.flatMap, um eine Transformationsfunktion anzuwenden, die eine Option auf den Wert zurückgibt, wenn die Option Some ist, und das Ergebnis zu reduzieren.

import { Option as O, pipe } from 'effect';

function mapping_ex04() {
  const some = O.some(1); // Create an Option containing the value 1
  const none = O.none(); // Create an Option representing no value
  const doubleIfPositive = (n: number) => (n > 0 ? O.some(n * 2) : O.none());

  console.log(pipe(some, O.flatMap(doubleIfPositive))); // Output: Some(2) (since some contains 1 and 1 > 0)
  console.log(pipe(none, O.flatMap(doubleIfPositive))); // Output: None (since none is None)
}
Nach dem Login kopieren

Erläuterung:

  1. Optionen erstellen: Wir erstellen zwei Optionen, eine mit einem Wert (einige mit 1) und eine andere, die keinen Wert darstellt (keine).
  2. Anwenden von O.flatMap: Wir verwenden O.flatMap, um eine Transformationsfunktion (doubleIfPositive) anzuwenden, die eine Option zurückgibt. Wenn der Wert positiv ist, wird der Wert verdoppelt und in Some eingeschlossen, andernfalls wird None zurückgegeben.

Die Ausgabe ist „Some(2)“ für die Option „some“ und „None“ für die Option „none“ und zeigt, wie O.flatMap das Ergebnis der Transformation flacher macht.

Beispiel 5: FlatMapping von Nullable-Werten mit O.flatMapNullable

Verwenden Sie O.flatMapNullable, um eine Transformationsfunktion anzuwenden, die einen nullbaren Wert auf den Wert zurückgeben kann, wenn die Option Some ist, und das Ergebnis in eine Option umwandeln.

import { Option as O, pipe } from 'effect';

function mapping_ex05() {
  const some = O.some({ a: { b: { c: 1 } } }); // Create an Option containing a nested object
  const none = O.none(); // Create an Option representing no value
  const getCValue = (obj: { a?: { b?: { c?: number } } }) => obj.a?.b?.c ?? null;

  console.log(pipe(some, O.flatMapNullable(getCValue))); // Output: Some(1) (extracts the nested value)
  console.log(pipe(none, O.flatMapNullable(getCValue))); // Output: None (since none is None)
}
Nach dem Login kopieren

Erläuterung:

  1. Optionen erstellen: Wir erstellen zwei Optionen, eine mit einem verschachtelten Objekt (some) und eine andere, die keinen Wert darstellt (none).
  2. Anwenden von O.flatMapNullable: Wir verwenden O.flatMapNullable, um eine Transformationsfunktion (getCValue) anzuwenden, die einen verschachtelten Wert extrahiert und möglicherweise Null zurückgibt. Die Funktion gibt Some zurück, wenn ein Wert gefunden wird, andernfalls gibt sie None zurück.

Die Ausgabe ist „Some(1)“ für die Option „some“ und „None“ für die Option „none“ und zeigt, wie O.flatMapNullable das Ergebnis der Transformation in eine Option konvertiert.

Das obige ist der detaillierte Inhalt vonZuordnungsoperationen in Effect-TS Optionals. 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