Rumah >hujung hadapan web >tutorial js >Menggunakan Notasi do dalam Pilihan Kesan-TS

Menggunakan Notasi do dalam Pilihan Kesan-TS

PHPz
PHPzasal
2024-07-23 10:32:231001semak imbas

Using do Notation in Effect-TS Optionals

Effect-TS menyediakan cara yang berkuasa untuk mengendalikan operasi dalam konteks Pilihan menggunakan notasi do. Artikel ini meneroka cara menyusun berbilang operasi dengan tatatanda do dan menunjukkan pelbagai senario melalui contoh.

Contoh 1: Penjujukan dan Penapisan Asas

Dalam contoh ini, kami mengikat nilai dalam konteks Pilihan, mengira jumlah dan menapis berdasarkan syarat.

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

function do_ex01() {
  const result = pipe(
    O.Do,
    O.bind('x', () => O.some(2)), // Bind x to the value 2 wrapped in Some
    O.bind('y', () => O.some(3)), // Bind y to the value 3 wrapped in Some
    O.let('sum', ({ x, y }) => x + y), // Let sum be the sum of x and y
    O.filter(({ x, y }) => x * y > 5) // Filter the result if x * y > 5
  );
  console.log(result); // Output: Some({ x: 2, y: 3, sum: 5 }) (since 2 * 3 > 5)
}

Penjelasan:

  • Nilai Mengikat: Kami mengikat x kepada 2 dan y kepada 3, kedua-duanya dibalut dengan Beberapa.
  • Jumlah Pengiraan: Kami mengira jumlah sebagai jumlah x dan y.
  • Penapisan: Kami menapis hasil berdasarkan keadaan x * y > 5.

Output ialah Some({ x: 2, y: 3, sum: 5 }) kerana keadaan 2 * 3 > 5 dipenuhi.

Contoh 2: Penapisan dengan Keadaan Gagal

Contoh ini menunjukkan bahawa jika keadaan penapis gagal, hasilnya ialah Tiada.

function do_ex02() {
  const result = pipe(
    O.Do,
    O.bind('x', () => O.some(1)), // Bind x to the value 1 wrapped in Some
    O.bind('y', () => O.some(2)), // Bind y to the value 2 wrapped in Some
    O.let('sum', ({ x, y }) => x + y), // Let sum be the sum of x and y
    O.filter(({ x, y }) => x * y > 5) // Filter the result if x * y > 5
  );
  console.log(result); // Output: None (since 1 * 2 <= 5)
}

Penjelasan:

  • Nilai Mengikat: Kami mengikat x kepada 1 dan y kepada 2.
  • Jumlah Pengiraan: Kami mengira jumlah sebagai jumlah x dan y.
  • Penapisan: Kami menapis hasil berdasarkan keadaan x * y > 5.

    Output adalah Tiada kerana syarat 1 * 2 <= 5 gagal.

    Contoh 3: Mengikat dengan Tiada

    Contoh ini menunjukkan bahawa jika sebarang pengikatan Tiada, hasilnya Tiada.

    function do_ex03() {
      const result = pipe(
        O.Do,
        O.bind('x', () => O.some(2)), // Bind x to the value 2 wrapped in Some
        O.bind('y', () => O.none()), // Bind y to None
        O.let('sum', ({ x, y }) => x + y), // This line won't execute since y is None
        O.filter(({ x, y }) => x * y > 5) // This line won't execute since y is None
      );
      console.log(result); // Output: None (since y is `None`)
    }
    </p>

    Penjelasan:

    • Nilai Mengikat: Kami mengikat x kepada 2 dan y kepada Tiada.
    • Melangkau Pengiraan dan Penapisan: Memandangkan y ialah Tiada, operasi seterusnya dilangkau.

    Keluaran ialah Tiada kerana salah satu pengikatan (y) ialahTiada`.

    Ringkasan

    Notasi do dalam Effect-TS membenarkan penjujukan operasi yang elegan dan boleh dibaca dalam konteks Pilihan. Dengan mengikat nilai, membenarkan nilai yang dikira dan menapis berdasarkan syarat, kami boleh mengendalikan logik pilihan yang kompleks dengan cara yang mudah. Contoh di atas menggambarkan bagaimana keputusan berubah berdasarkan keadaan yang berbeza dan kehadiran Tiada.

    Atas ialah kandungan terperinci Menggunakan Notasi do dalam Pilihan Kesan-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