"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > خيارات الضغط في Effect-TS: دليل عملي

خيارات الضغط في Effect-TS: دليل عملي

تم النشر بتاريخ 2024-11-07
تصفح:804

Zipping Options in Effect-TS: A Practical Guide

خيارات الضغط في Effect-TS: دليل عملي

في البرمجة الوظيفية، يعد الجمع بين القيم الاختيارية المتعددة (الممثلة كخيارات) بطريقة آمنة ويمكن التنبؤ بها مهمة شائعة. يوفر Effect-TS عدة طرق لضغط الخيارات معًا، مما يسمح لك بدمج قيمها أو تحديد واحدة بناءً على قواعد محددة. في هذه المقالة، سوف نستكشف ثلاث وظائف رئيسية لخيارات الضغط: O.zipRight، وO.zipLeft، وO.zipWith.

مثال 1: إرجاع الخيار الثاني باستخدام O.zipRight

مفهوم

تتيح لك وظيفة 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)
}

توضيح

  • pipe(some1, O.zipRight(some2)): كل من some1 وsome2 هما Some، لذا تقوم الدالة بإرجاع الخيار الثاني، وهو Some(2).
  • pipe(some1, O.zipRight(none)): بما أن الخيار الثاني هو لا شيء، فإن الدالة ترجع لا شيء.
  • pipe(none, O.zipRight(some2)): الخيار الأول هو لا شيء، وبالتالي فإن الدالة ترجع لا شيء، بغض النظر عن الخيار الثاني.

هذه الوظيفة مفيدة بشكل خاص عندما تريد تنفيذ عملية تعتمد النتيجة فيها فقط على الخيار الثاني.

المثال 2: إرجاع الخيار الأول باستخدام O.zipLeft

مفهوم

الدالة 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)
}

توضيح

  • pipe(some1, O.zipLeft(some2)): بما أن كلا الخيارين هما Some، فإن الدالة ترجع الخيار الأول، وهو Some(1).
  • pipe(some1, O.zipLeft(none)): الخيار الثاني هو لا شيء، وبالتالي فإن الدالة ترجع لا شيء.
  • pipe(none, O.zipLeft(some2)): بما أن الخيار الأول هو بلا، فإن الدالة ترجع بلا.

هذه الوظيفة مفيدة عندما يجب تحديد النتيجة من خلال الخيار الأول، ولكنك لا تزال ترغب في التأكد من صلاحية الخيار الثاني.

مثال 3: دمج الخيارات مع دالة باستخدام O.zipWith

مفهوم

توفر وظيفة 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)
}

توضيح

  • pipe(some1, O.zipWith(some2, add)): كلا الخيارين هما بعض، لذلك يتم تطبيق وظيفة الإضافة، مما يؤدي إلى بعض(3).
  • pipe(some1, O.zipWith(none, add)): بما أن الخيار الثاني هو لا شيء، فإن الدالة ترجع لا شيء.
  • pipe(none, O.zipWith(some2, add)): الخيار الأول هو لا شيء، وبالتالي فإن الدالة ترجع لا شيء.

تعتبر هذه الوظيفة مثالية عندما تحتاج إلى إجراء عملية على قيم الخيارين، حيث أنها تضمن وجود القيمتين قبل تنفيذ العملية.

خاتمة

تعد خيارات الضغط في Effect-TS طريقة قوية لدمج القيم الاختيارية بأمان. سواء كنت مهتمًا بالخيار الأول أو الثاني أو مزيج من الاثنين معًا، فإن وظائف O.zipRight وO.zipLeft وO.zipWith توفر الأدوات التي تحتاجها للتعامل مع هذه السيناريوهات بكفاءة. ومن خلال فهم هذه الأنماط وتطبيقها، يمكنك كتابة تعليمات برمجية وظيفية أكثر قوة وقابلية للتنبؤ بها.

بيان الافراج يتم استنساخ هذه المقالة على: https://dev.to/almaclaine/zipping-options-in-fect-ts-a-practical-guide-72h؟1 إذا كان هناك أي انتهاك ، فيرجى الاتصال بـ [email protected] لحذفه.
أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3