Rumah >hujung hadapan web >tutorial js >Meneroka Penukaran Opsyen dalam Effect-TS

Meneroka Penukaran Opsyen dalam Effect-TS

WBOY
WBOYasal
2024-07-18 04:20:30703semak imbas

Exploring Option Conversions in Effect-TS

Effect-TS menyediakan alatan berkuasa untuk mengendalikan Option dan Sama ada jenis. Dalam artikel ini, kami akan meneroka pelbagai cara untuk menukar dan memanipulasi jenis ini menggunakan fungsi utiliti perpustakaan.

Contoh 1: Tukar Mana-mana kepada Pilihan dengan O.getRight

Fungsi O.getRight menukar Sama ada kepada Pilihan, membuang ralat. Jika Either is Right, ia mengembalikan O.some(value), jika tidak ia mengembalikan O.none.

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

function conversions_ex01() {
  const eitherRight = E.right('ok'); // Create an Either containing the value 'ok'
  const eitherLeft = E.left('error'); // Create an Either representing an error

  console.log(O.getRight(eitherRight)); // Output: Some('ok')
  console.log(O.getRight(eitherLeft)); // Output: None
}

Contoh 2: Tukar Mana-mana kepada Pilihan dengan O.getLeft

Fungsi O.getLeft menukar Sama ada kepada Pilihan, membuang nilai. Jika Sama ada Kiri, ia mengembalikan O.some(error), jika tidak ia mengembalikan O.tiada.

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

function conversions_ex02() {
  const eitherRight = E.right('ok'); // Create an Either containing the value 'ok'
  const eitherLeft = E.left('error'); // Create an Either representing an error

  console.log(O.getLeft(eitherRight)); // Output: None
  console.log(O.getLeft(eitherLeft)); // Output: Some('error')
}

Contoh 3: Dapatkan Nilai atau Lalai dengan O.getOrElse

Fungsi O.getOrElse mengembalikan nilai di dalam Pilihan jika ia adalah Beberapa, jika tidak, ia mengembalikan nilai lalai yang disediakan.

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

function conversions_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.getOrElse(() => 'default')
    )
  ); // Output: 1 (since some contains 1)
  console.log(
    pipe(
      none,
      O.getOrElse(() => 'default')
    )
  ); // Output: 'default' (since none is None)
}

Contoh 4: Merangkai Pilihan dengan O.orElse

Fungsi O.orElse mengembalikan Pilihan yang disediakan iaitu jika diri Tiada, sebaliknya ia mengembalikan diri. Fungsi ini membenarkan rantaian Pilihan dengan sandaran ialah Pilihan lain.

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

function conversions_ex04() {
  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.orElse(() => some2)
    )
  ); // Output: Some(1) (since some1 contains 1)
  console.log(
    pipe(
      none,
      O.orElse(() => some2)
    )
  ); // Output: Some(2) (since none is None and fallback is some2)
}

Contoh 5: Berundur kepada Nilai Lalai dengan O.orElseSome

Fungsi O.orElseSome mengembalikan nilai lalai yang disediakan yang dibalut dengan Some jika self is None, jika tidak ia mengembalikan self. Fungsi ini membenarkan rantaian Pilihan dengan sandaran adalah nilai lalai yang dibalut dalam Beberapa.

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

function conversions_ex05() {
  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.orElseSome(() => 2)
    )
  ); // Output: Some(1) (since some contains 1)
  console.log(
    pipe(
      none,
      O.orElseSome(() => 2)
    )
  ); // Output: Some(2) (since none is None and fallback is 2)
}

Contoh 6: Merangkai Pilihan dengan Sama ada Konteks menggunakan O.orElseEither

Fungsi O.orElseEither mengembalikan Pilihan yang mengandungi Sama ada di mana Kiri adalah daripada Pilihan sandaran dan Kanan adalah daripada Pilihan asal. Fungsi ini membenarkan rantaian Pilihan di mana sandaran menyediakan Sama ada untuk lebih konteks.

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

function conversions_ex06() {
  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.orElseEither(() => some2)
    )
  ); // Output: Some(Right(1)) (since some1 contains 1)
  console.log(
    pipe(
      none,
      O.orElseEither(() => some2)
    )
  ); // Output: Some(Left(2)) (since none is None and fallback is some2)
}

Contoh 7: Cari First Some dalam Iterable dengan O.firstSomeOf

Fungsi O.firstSomeOf mengembalikan Some pertama yang ditemui dalam Opsyen boleh lelar. Jika semuanya Tiada, ia akan kembali Tiada.

import { Option as O } from 'effect';

function conversions_ex07() {
  const options = [O.none(), O.some(1), O.some(2)]; // Create an iterable of Options
  const optionsAllNone = [O.none(), O.none()]; // Create an iterable of None Options

  console.log(O.firstSomeOf(options)); // Output: Some(1) (since the first non-None Option is Some(1))
  console.log(O.firstSomeOf(optionsAllNone)); // Output: None (since all Options are None)
}

Contoh 8: Tukar Fungsi Mengembalikan Pilihan kepada Pengawal Jenis dengan O.toRefinement

Fungsi O.toRefinement menukar fungsi mengembalikan Pilihan kepada pengawal jenis, membenarkan pemeriksaan jenis yang lebih khusus.

import { Option as O } from 'effect';

function conversions_ex08() {
  const isPositive = (n: number): O.Option<number> => n > 0 ? O.some(n) : O.none();
  const isPositiveRefinement = O.toRefinement(isPositive);

  console.log(isPositiveRefinement(1)); // Output: true (since 1 is positive)
  console.log(isPositiveRefinement(-1)); // Output: false (since -1 is not positive)
}

Contoh 9: Tukar Pilihan kepada Tatasusunan dengan O.toArray

Fungsi O.toArray menukarkan Pilihan kepada tatasusunan. Jika Pilihan ialah Beberapa, ia mengembalikan tatasusunan yang mengandungi nilai; jika Tiada, ia mengembalikan tatasusunan kosong.

import { Option as O } from 'effect';

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

  console.log(O.toArray(some)); // Output: [1] (since some contains 1)
  console.log(O.toArray(none)); // Output: [] (since none is None)
}

Kesimpulan

Dalam artikel ini, kami telah meneroka pelbagai fungsi yang disediakan oleh Effect-TS untuk menukar dan memanipulasi Pilihan dan Mana-mana jenis. Fungsi ini meningkatkan fleksibiliti dan ekspresi kod anda, membolehkan anda mengendalikan nilai pilihan dan rawan ralat dengan lebih anggun. Sama ada anda perlu menukar Sama ada kepada Opsyen, rantaian berbilang nilai Opsyen atau melakukan operasi selamat jenis, Effect-TS menawarkan set alat yang mantap untuk memudahkan tugasan ini. Dengan memanfaatkan utiliti ini, anda boleh menulis kod yang lebih bersih dan boleh diselenggara yang mengendalikan kehadiran atau ketiadaan nilai secara berkesan.

Atas ialah kandungan terperinci Meneroka Penukaran Opsyen dalam Effect-TS. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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