Rumah  >  Artikel  >  hujung hadapan web  >  Meneroka Option Getters dalam Effect-TS

Meneroka Option Getters dalam Effect-TS

王林
王林asal
2024-07-18 00:37:32646semak imbas

Exploring Option Getters in Effect-TS

Effect-TS menyediakan set alat yang mantap untuk mengendalikan jenis Pilihan, yang mewakili nilai yang mungkin wujud atau tidak. Dalam artikel ini, kami akan meneroka pelbagai cara untuk mendapatkan nilai dalam Opsyen menggunakan getter berbeza yang disediakan oleh pustaka.

Contoh 1: Menggunakan O.getOrElse

Fungsi O.getOrElse membolehkan anda memberikan nilai lalai jika Pilihan adalah Tiada. Ini berguna apabila anda ingin memastikan nilai sandaran sentiasa tersedia.

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

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

Contoh 2: Menggunakan O.getOrThrow

Fungsi O.getOrThrow mengembalikan nilai di dalam Option jika ia adalah Beberapa, jika tidak, ia akan melemparkan ralat lalai.

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

function getters_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.getOrThrow)); // Output: 1 (since some contains 1)

  try {
    console.log(pipe(none, O.getOrThrow)); // This will throw an error
  } catch (e) {
    console.log(e.message); // Output: getOrThrow called on a None
  }
}

Contoh 3: Menggunakan O.getOrNull

Fungsi O.getOrNull mengembalikan nilai di dalam Option jika ia adalah Beberapa, jika tidak ia mengembalikan nilai nol.

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

function getters_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.getOrNull)); // Output: 1 (since some contains 1)
  console.log(pipe(none, O.getOrNull)); // Output: null (since none is None)
}

Contoh 4: Menggunakan O.getOrUndefined

Fungsi O.getOrUndefined mengembalikan nilai di dalam Option jika ia adalah Sebilangan, jika tidak ia mengembalikan tidak ditentukan.

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

function getters_ex04() {
  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.getOrUndefined)); // Output: 1 (since some contains 1)
  console.log(pipe(none, O.getOrUndefined)); // Output: undefined (since none is None)
}

Contoh 5: Menggunakan O.getOrThrowWith

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

function getters_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.getOrThrowWith(() => new Error('Custom Error')))); // Output: 1 (since some contains 1)

  try {
    console.log(pipe(none, O.getOrThrowWith(() => new Error('Custom Error')))); // This will throw a custom error
  } catch (e) {
    console.log(e.message); // Output: Custom Error
  }
}

Kesimpulan

Dengan menggunakan pengambil yang berbeza ini, anda boleh mengendalikan jenis Opsyen dengan berkesan dalam pelbagai senario, memastikan kod anda berfungsi dengan betul sama ada Pilihan ialah Beberapa atau Tiada. Utiliti ini menyediakan cara yang jelas dan selamat jenis untuk bekerja dengan nilai pilihan, mengelakkan perangkap biasa yang dikaitkan dengan semakan nol dan meningkatkan kebolehbacaan dan kebolehselenggaraan kod anda. Mengguna pakai corak ini boleh membawa kepada pangkalan kod yang lebih bersih dan teguh di mana

Atas ialah kandungan terperinci Meneroka Option Getters 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