Effect-TS menyediakan pelbagai kaedah untuk menapis nilai dalam Opsyen, membolehkan anda menggunakan transformasi, predikat atau semakan pada nilai pilihan. Fungsi ini membantu memastikan bahawa hanya data yang berkaitan dikekalkan semasa membuang nilai Tiada atau yang tidak memenuhi syarat yang ditentukan. Dalam artikel ini, kami akan meneroka empat fungsi utama untuk menapis Pilihan: O.partitionMap, O.filterMap, O.filter dan O.exists.
Fungsi O.partitionMap membolehkan anda membahagikan Pilihan menjadi satu tuple dua Pilihan berdasarkan fungsi pemetaan yang mengembalikan Sama ada. Nilai Either.left dibahagikan kepada Pilihan pertama, manakala nilai Either.right masuk ke Pilihan kedua. Jika Pilihan asal ialah Tiada, kedua-dua partition adalah Tiada.
function filtering_ex01() { const some = O.some(1); // Create an Option containing the value 1 const none = O.none(); // Create an Option representing no value const toEither = (n: number) => (n % 2 === 0 ? E.left(n) : E.right(n)); console.log(pipe(some, O.partitionMap(toEither))); // Output: [None, Some(1)] (1 is odd, so it goes to the right) console.log(pipe(none, O.partitionMap(toEither))); // Output: [None, None] (since the Option is None) }
Fungsi ini berguna apabila anda perlu menggunakan pemetaan yang mengkategorikan nilai, sambil mengasingkannya kepada dua kumpulan—yang memenuhi syarat dan yang tidak.
Fungsi O.filterMap menggunakan fungsi transformasi pada nilai di dalam Pilihan. Jika fungsi mengembalikan Some, nilai itu dikekalkan; jika ia mengembalikan Tiada, nilai itu ditapis keluar. Jika Pilihan asal ialah Tiada, hasilnya kekal Tiada.
function filtering_ex02() { const some = O.some(1); // Create an Option containing the value 1 const none = O.none(); // Create an Option representing no value const toEven = (n: number) => (n % 2 === 0 ? O.some(n) : O.none()); console.log(pipe(some, O.filterMap(toEven))); // Output: None (since 1 is not even) console.log(pipe(O.some(2), O.filterMap(toEven))); // Output: Some(2) (since 2 is even) console.log(pipe(none, O.filterMap(toEven))); // Output: None (since the original Option is None) }
Fungsi ini berguna apabila anda ingin menukar dan menapis nilai di dalam Pilihan berdasarkan syarat tertentu.
Fungsi O.filter menyemak sama ada nilai di dalam Pilihan memenuhi predikat tertentu. Jika predikat berpuas hati, ia mengembalikan Pilihan asal; jika tidak, ia mengembalikan Tiada. Jika Pilihan asal ialah Tiada, ia kekal Tiada.
function filtering_ex03() { const some = O.some(1); // Create an Option containing the value 1 const none = O.none(); // Create an Option representing no value const isEven = (n: number) => n % 2 === 0; console.log(pipe(some, O.filter(isEven))); // Output: None (since 1 is not even) console.log(pipe(O.some(2), O.filter(isEven))); // Output: Some(2) (since 2 is even) console.log(pipe(none, O.filter(isEven))); // Output: None (since the original Option is None) }
Fungsi O.exists menyemak sama ada nilai di dalam Pilihan memenuhi predikat, mengembalikan benar jika ada dan palsu jika tidak. Jika Pilihan itu Tiada, ia mengembalikan palsu.
function filtering_ex04() { const some = O.some(1); // Create an Option containing the value 1 const none = O.none(); // Create an Option representing no value const isEven = (n: number) => n % 2 === 0; console.log(pipe(some, O.exists(isEven))); // Output: false (since 1 is not even) console.log(pipe(O.some(2), O.exists(isEven))); // Output: true (since 2 is even) console.log(pipe(none, O.exists(isEven))); // Output: false (since the original Option is None) }
Fungsi ini berguna apabila anda memerlukan semakan pantas untuk menentukan sama ada nilai di dalam Pilihan memenuhi syarat tanpa mengubah atau menapis Pilihan itu sendiri.
Pilihan Penapisan dalam Effect-TS membolehkan pengendalian nilai pilihan yang fleksibel berdasarkan keadaan atau transformasi. Sama ada anda membahagikan nilai dengan O.partitionMap, menggunakan transformasi dengan O.filterMap, menyemak predikat dengan O.filter atau hanya mengesahkan keadaan dengan O.exists, alatan ini menyediakan kaedah yang mantap untuk mengawal cara Pilihan dikendalikan. Dengan menggunakan fungsi ini, anda boleh mengurus data pilihan dengan cekap, memastikan hanya nilai yang berkaitan disimpan atau diambil tindakan.
Atas ialah kandungan terperinci Pilihan Penapisan dalam Effect-TS: Panduan Praktikal. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!