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.
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) }
Operasi penjujukan ini amat berguna apabila anda ingin merantai operasi tetapi hanya berminat dengan hasil operasi kedua.
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.
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) }
Meratakan adalah penting apabila berurusan dengan fungsi yang mungkin mengembalikan Pilihan bersarang, membolehkan anda menyelaraskan hasil menjadi satu nilai Pilihan.
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.
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) }
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.
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!