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

فهم تسلسل الخيارات في Effect-TS

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

Understanding Option Sequencing in Effect-TS

مثال 1: تجاهل القيمة الأولى باستخدام O.andThen

مفهوم

تتيح لك الدالة O.andThen تنفيذ سلسلة من خيارين، حيث يتم تحديد النتيجة فقط من خلال الخيار الثاني. يكون هذا مفيدًا عندما يخدم الخيار الأول غرضًا ما، لكن قيمته غير مطلوبة في العمليات اللاحقة.

شفرة

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)
}

توضيح

  • pipe(some1, O.andThen(some2)): هنا، some1 يحمل القيمة 1، لكن العملية تتجاهلها وترجع some2، التي تحمل 2.
  • pipe(none, O.andThen(some2)): بما أن الخيار الأول هو لا شيء، فإن العملية تقصر الدائرة وترجع لا شيء.

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

المثال 2: تسوية الخيارات المتداخلة باستخدام O.flatten

مفهوم

تم تصميم الدالة O.flatten للتعامل مع الخيارات المتداخلة عن طريق إزالة مستوى واحد من التداخل. يكون هذا مفيدًا عندما تؤدي عملياتك إلى خيار من الخيارات، وتحتاج إلى تبسيطه في خيار واحد.

شفرة

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)
}

توضيح

  • pipe(nestedSome, O.flatten): يؤدي هذا إلى تسطيح خيار الخيار في خيار واحد، مما يؤدي إلى Some(1).
  • pipe(nestedNone, O.flatten): الخيار الداخلي هو لا شيء، لذا فإن التسوية لا شيء.
  • pipe(none, O.flatten): إذا كان الخيار الخارجي هو لا شيء، فلن يكون للتسوية أي تأثير، وسيتم إرجاع لا شيء.

التسطيح ضروري عند التعامل مع الوظائف التي قد ترجع خيارات متداخلة، مما يسمح لك بتبسيط النتيجة في قيمة خيار واحدة.

المثال 3: إنشاء وظائف إرجاع الخيارات باستخدام O.composeK

مفهوم

تتيح لك وظيفة O.composeK إنشاء وظيفتين ترجعان خيارًا، مما يؤدي إلى إنشاء خط أنابيب حيث يتم تغذية مخرجات الوظيفة الأولى إلى الثانية. وهذا مفيد بشكل خاص لعمليات التسلسل التي قد تفشل وتؤدي إلى عدم وجود شيء.

شفرة

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

  const doubleIfPositive = (n: number): O.Option =>
    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)
}

توضيح

  • parseAndDouble('42'): تم تحليل السلسلة '42' بنجاح إلى رقم، وبما أنها موجبة، فقد تمت مضاعفتها، مما أدى إلى Some(84).
  • parseAndDouble('-1'): تم تحليل السلسلة '-1'، ولكن بما أنها سالبة، فإن الدالة ترجع لا شيء.
  • parseAndDouble('abc'): لا يمكن تحليل السلسلة 'abc' كرقم، لذا ترجع الدالة بلا.

يسمح لك إنشاء وظائف إرجاع الخيارات بإنشاء سلاسل معقدة من العمليات أثناء التعامل بأمان مع الحالات التي قد تفشل فيها أي خطوة في السلسلة.

خاتمة

تعرض هذه الأمثلة تنوع وقوة نوع الخيار في Effect-TS للتعامل مع تسلسل العمليات. سواء كنت تتجاهل القيم باستخدام O.andThen، أو تسوية الخيارات المتداخلة باستخدام O.flatten، أو إنشاء عمليات باستخدام O.composeK، فإن هذه الأنماط تمكنك من إدارة القيم الاختيارية بشكل أكثر فعالية في سياق برمجة وظيفية. من خلال الاستفادة من هذه التقنيات، يمكنك كتابة تعليمات برمجية أكثر قوة وإيجازًا، مما يضمن أن العمليات تتعامل بأمان مع غياب القيم مع الحفاظ على منطق واضح وسهل القراءة.

بيان الافراج تم نشر هذه المقالة على: https://dev.to/almaclaine/understanding-option-sequencing-in-effect-ts-22g7?1 إذا كان هناك أي انتهاك، يرجى الاتصال بـ [email protected] لحذفه
أحدث البرنامج التعليمي أكثر>

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

Copyright© 2022 湘ICP备2022001581号-3