Dalam Effect-TS, pelbagai fungsi pemetaan boleh digunakan pada nilai di dalam Pilihan untuk mengubah, menggantikan atau memanipulasi nilai yang terkandung. Artikel ini meneroka fungsi pemetaan berbeza yang disediakan oleh Effect-TS dengan contoh praktikal.
Gunakan O.map untuk menggunakan fungsi transformasi pada nilai di dalam Pilihan. Jika Pilihan adalah Beberapa, fungsi itu digunakan; jika tidak, hasilnya tiada.
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) }
Gunakan O.as untuk menggantikan nilai di dalam Pilihan dengan nilai malar yang disediakan.
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) }
Output ialah Some('replaced') untuk beberapa Option dan None untuk none Option, menunjukkan bagaimana O.as berkesan menggantikan nilai asal jika ia wujud.
Gunakan O.asVoid untuk menggantikan nilai dalam Option dengan undefined.
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) }
Penjelasan:
Keluaran ialah Some(undefined) untuk beberapa Option dan None untuk none Option, menunjukkan cara O.asVoid menggantikan nilai asal dengan berkesan jika ia wujud.
Gunakan O.flatMap untuk menggunakan fungsi transformasi yang mengembalikan Pilihan kepada nilai jika Pilihan ialah Beberapa dan ratakan hasilnya.
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) }
Keluaran ialah Beberapa(2) untuk beberapa Pilihan dan Tiada untuk Pilihan tiada, menunjukkan cara O.flatMap meratakan hasil transformasi.
Gunakan O.flatMapNullable untuk menggunakan fungsi transformasi yang mungkin mengembalikan nilai yang boleh dibatalkan kepada nilai jika Pilihan ialah Beberapa dan tukar hasilnya kepada Pilihan.
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) }
Output ialah Some(1) untuk beberapa Option dan None untuk none Option, menunjukkan cara O.flatMapNullable menukar hasil transformasi kepada Option.
Atas ialah kandungan terperinci Operasi Pemetaan dalam Pilihan Effect-TS. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!