Operasi Pemetaan dalam Pilihan Effect-TS

PHPz
Lepaskan: 2024-07-23 11:59:13
asal
345 orang telah melayarinya

Mapping Operations in Effect-TS Optionals

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.

Contoh 1: Pemetaan Asas dengan O.map

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)
}
Salin selepas log masuk

Contoh 2: Pemetaan kepada Nilai Malar dengan O.as

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)
}
Salin selepas log masuk

Penjelasan:

  1. Mencipta Pilihan: Kami mencipta dua Pilihan, satu mengandungi nilai (beberapa dengan 1) dan satu lagi tidak mewakili nilai (tiada).
  2. Menggunakan O.as: Kami menggunakan O.as untuk menggantikan nilai di dalam Pilihan dengan nilai malar 'digantikan'.

Output ialah Some('replaced') untuk beberapa Option dan None untuk none Option, menunjukkan bagaimana O.as berkesan menggantikan nilai asal jika ia wujud.

Contoh 3: Pemetaan kepada batal dengan O.asVoid

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)
}
Salin selepas log masuk

Penjelasan:

  1. Mencipta Pilihan: Kami mencipta dua Pilihan, satu mengandungi nilai (beberapa dengan 1) dan satu lagi tidak mewakili nilai (tiada).
  2. Memohon O.asVoid: Kami menggunakan O.asVoid untuk menggantikan nilai di dalam Pilihan dengan undefined.

Keluaran ialah Some(undefined) untuk beberapa Option dan None untuk none Option, menunjukkan cara O.asVoid menggantikan nilai asal dengan berkesan jika ia wujud.

Contoh 4: Pemetaan Rata dengan O.flatMap

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)
}
Salin selepas log masuk

Penjelasan:

  1. Membuat Pilihan: Kami mencipta dua Pilihan, satu mengandungi nilai (beberapa dengan 1) dan satu lagi tidak mewakili nilai (tiada).
  2. Menggunakan O.flatMap: Kami menggunakan O.flatMap untuk menggunakan fungsi transformasi (doubleIfPositive) yang mengembalikan Pilihan. Jika nilainya positif, nilai itu menggandakan nilai dan membungkusnya dalam Beberapa, jika tidak, ia tidak mengembalikan Tiada.

Keluaran ialah Beberapa(2) untuk beberapa Pilihan dan Tiada untuk Pilihan tiada, menunjukkan cara O.flatMap meratakan hasil transformasi.

Contoh 5: FlatMapping Nilai Nullable dengan O.flatMapNullable

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)
}
Salin selepas log masuk

Penjelasan:

  1. Mencipta Pilihan: Kami mencipta dua Pilihan, satu mengandungi objek bersarang (beberapa) dan satu lagi tidak mewakili nilai (tiada).
  2. Menggunakan O.flatMapNullable: Kami menggunakan O.flatMapNullable untuk menggunakan fungsi transformasi (getCValue) yang mengekstrak nilai bersarang dan mungkin mengembalikan null. Fungsi mengembalikan Sesetengah jika nilai ditemui, jika tidak, ia mengembalikan Tiada.

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!

sumber:dev.to
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan