Rumah  >  Artikel  >  hujung hadapan web  >  Memahami Penjujukan Pilihan dalam Effect-TS

Memahami Penjujukan Pilihan dalam Effect-TS

王林
王林asal
2024-08-29 11:35:13206semak imbas

Understanding Option Sequencing in Effect-TS

Contoh 1: Mengabaikan Nilai Pertama dengan O.andThen

Konsep

Fungsi O.andThen membolehkan anda melaksanakan urutan dua Pilihan, di mana keputusan ditentukan semata-mata oleh Pilihan kedua. Ini berguna apabila Pilihan pertama berfungsi, tetapi nilainya tidak diperlukan dalam operasi seterusnya.

Kod

function sequencing_ex01() {
  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.andThen(some2))); // Output: Some(2) (ignores 1 and returns 2)
  console.log(pipe(none, O.andThen(some2))); // Output: None (since the first Option is None)
}

Penjelasan

  • paip(some1, O.andThen(some2)): Di sini, some1 memegang nilai 1, tetapi operasi mengabaikannya dan mengembalikan some2, yang memegang 2.
  • paip(tiada, O.andThen(some2)): Memandangkan Pilihan pertama ialah Tiada, operasi litar pintas dan mengembalikan Tiada.

Operasi penjujukan ini amat berguna apabila anda ingin merantai operasi tetapi hanya berminat dengan hasil operasi kedua.

Contoh 2: Meratakan Pilihan Bersarang dengan O.flatten

Konsep

Fungsi O.flatten direka untuk mengendalikan Pilihan bersarang dengan mengalih keluar satu tahap sarang. Ini berguna apabila operasi anda menghasilkan Pilihan Pilihan dan anda perlu memudahkannya menjadi satu Pilihan.

Kod

function sequencing_ex02() {
  const nestedSome = O.some(O.some(1)); // Create a nested Option containing the value 1
  const nestedNone = O.some(O.none()); // Create a nested Option representing no value
  const none = O.none(); // Create an Option representing no value

  console.log(pipe(nestedSome, O.flatten)); // Output: Some(1) (flattens the nested Option)
  console.log(pipe(nestedNone, O.flatten)); // Output: None (flattens to None)
  console.log(pipe(none, O.flatten)); // Output: None (since the outer Option is None)
}

Penjelasan

  • paip(nestedSome, O.flatten): Ini meratakan Pilihan Opsyen menjadi satu Pilihan, menghasilkan Beberapa(1).
  • paip(nestedNone, O.flatten): Pilihan dalam ialah Tiada, jadi meratakan menghasilkan Tiada.
  • paip(tiada, O.flatten): Jika Pilihan luar adalah Tiada, meratakan tidak mempunyai kesan dan Tiada dikembalikan.

Meratakan adalah penting apabila berurusan dengan fungsi yang mungkin mengembalikan Pilihan bersarang, membolehkan anda menyelaraskan hasil menjadi satu nilai Pilihan.

Contoh 3: Mengarang Fungsi Mengembalikan Pilihan dengan O.composeK

Konsep

Fungsi O.composeK membolehkan anda mengarang dua fungsi yang mengembalikan Pilihan, mencipta saluran paip di mana output fungsi pertama dimasukkan ke dalam yang kedua. Ini amat berguna untuk operasi rantaian yang mungkin gagal dan mengakibatkan Tiada.

Kod

function sequencing_ex03() {
  const parseNumber = (s: string): O.Option<number> => {
    const n = parseInt(s, 10);
    return isNaN(n) ? O.none() : O.some(n);
  };

  const doubleIfPositive = (n: number): O.Option<number> =>
    n > 0 ? O.some(n * 2) : O.none();

  const parseAndDouble = pipe(parseNumber, O.composeK(doubleIfPositive));

  console.log(parseAndDouble('42')); // Output: Some(84) (parses and doubles the number)
  console.log(parseAndDouble('-1')); // Output: None (since -1 is not positive)
  console.log(parseAndDouble('abc')); // Output: None (since 'abc' is not a number)
}

Penjelasan

  • parseAndDouble('42'): Rentetan '42' berjaya dihuraikan kepada nombor dan kerana ia positif, ia digandakan, menghasilkan Beberapa(84).
  • parseAndDouble('-1'): Rentetan '-1' dihuraikan, tetapi kerana ia negatif, fungsi itu tidak mengembalikan Tiada.
  • parseAndDouble('abc'): Rentetan 'abc' tidak boleh dihuraikan sebagai nombor, jadi fungsi mengembalikan Tiada.

Mengarang fungsi pengembalian Pilihan membolehkan anda mencipta rantaian operasi yang kompleks sambil mengendalikan kes dengan selamat di mana mana-mana langkah dalam rantai mungkin gagal.

Kesimpulan

Contoh ini mempamerkan kepelbagaian dan kuasa jenis Pilihan dalam Effect-TS untuk mengendalikan urutan operasi. Sama ada anda mengabaikan nilai dengan O.andThen, meratakan Pilihan bersarang dengan O.flatten, atau mengarang operasi dengan O.composeK, corak ini membolehkan anda mengurus nilai pilihan dengan lebih berkesan dalam konteks pengaturcaraan berfungsi. Dengan memanfaatkan teknik ini, anda boleh menulis kod yang lebih mantap dan ringkas, memastikan operasi mengendalikan ketiadaan nilai dengan baik sambil mengekalkan logik yang jelas dan boleh dibaca.

Atas ialah kandungan terperinci Memahami Penjujukan Pilihan 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