في البرمجة الوظيفية، يعد الجمع بين القيم الاختيارية المتعددة (الممثلة كخيارات) بطريقة آمنة ويمكن التنبؤ بها مهمة شائعة. يوفر Effect-TS عدة طرق لضغط الخيارات معًا، مما يسمح لك بدمج قيمها أو تحديد واحدة بناءً على قواعد محددة. في هذه المقالة، سوف نستكشف ثلاث وظائف رئيسية لخيارات الضغط: O.zipRight، وO.zipLeft، وO.zipWith.
تتيح لك وظيفة O.zipRight الجمع بين خيارين، والتخلص من الأول وإرجاع الثاني. تنجح هذه العملية إذا كان كلا الخيارين بعضاً؛ وإلا فإنها ترجع لا شيء.
function zipping_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.zipRight(some2))); // Output: Some(2) (returns the second Option) console.log(pipe(some1, O.zipRight(none))); // Output: None (since the second Option is None) console.log(pipe(none, O.zipRight(some2))); // Output: None (since the first Option is None) }
هذه الوظيفة مفيدة بشكل خاص عندما تريد تنفيذ عملية تعتمد النتيجة فيها فقط على الخيار الثاني.
الدالة O.zipLeft هي النظير لـ O.zipRight، مما يسمح لك بدمج خيارين أثناء تجاهل الخيار الثاني وإرجاع الأول. مرة أخرى، تنجح هذه العملية إذا كان كلا الخيارين بعضاً؛ وإلا فإنها ترجع لا شيء.
function zipping_ex02() { 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.zipLeft(some2))); // Output: Some(1) (returns the first Option) console.log(pipe(some1, O.zipLeft(none))); // Output: None (since the second Option is None) console.log(pipe(none, O.zipLeft(some2))); // Output: None (since the first Option is None) }
هذه الوظيفة مفيدة عندما يجب تحديد النتيجة من خلال الخيار الأول، ولكنك لا تزال ترغب في التأكد من صلاحية الخيار الثاني.
توفر وظيفة O.zipWith أكبر قدر من المرونة، مما يسمح لك بدمج قيم خيارين باستخدام وظيفة متوفرة. إذا كان كلا الخيارين بعضًا، فسيتم تطبيق الوظيفة، ويتم تضمين النتيجة في خيار جديد. إذا كان أي من الخيارين بلا، فإن الدالة ترجع بلا.
function zipping_ex03() { 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 const add = (a: number, b: number) => a b; console.log(pipe(some1, O.zipWith(some2, add))); // Output: Some(3) (since 1 2 = 3) console.log(pipe(some1, O.zipWith(none, add))); // Output: None (since the second Option is None) console.log(pipe(none, O.zipWith(some2, add))); // Output: None (since the first Option is None) }
تعتبر هذه الوظيفة مثالية عندما تحتاج إلى إجراء عملية على قيم الخيارين، حيث أنها تضمن وجود القيمتين قبل تنفيذ العملية.
تعد خيارات الضغط في Effect-TS طريقة قوية لدمج القيم الاختيارية بأمان. سواء كنت مهتمًا بالخيار الأول أو الثاني أو مزيج من الاثنين معًا، فإن وظائف O.zipRight وO.zipLeft وO.zipWith توفر الأدوات التي تحتاجها للتعامل مع هذه السيناريوهات بكفاءة. ومن خلال فهم هذه الأنماط وتطبيقها، يمكنك كتابة تعليمات برمجية وظيفية أكثر قوة وقابلية للتنبؤ بها.
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3