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.
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) }
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) }
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.
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) }
Erklärung:
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.
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) }
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.
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) }
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!