تتيح لك الدالة 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) }
تعتبر عملية التسلسل هذه مفيدة بشكل خاص عندما تريد ربط العمليات ولكنك مهتم فقط بنتيجة العملية الثانية.
تم تصميم الدالة 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) }
التسطيح ضروري عند التعامل مع الوظائف التي قد ترجع خيارات متداخلة، مما يسمح لك بتبسيط النتيجة في قيمة خيار واحدة.
تتيح لك وظيفة 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) }
يسمح لك إنشاء وظائف إرجاع الخيارات بإنشاء سلاسل معقدة من العمليات أثناء التعامل بأمان مع الحالات التي قد تفشل فيها أي خطوة في السلسلة.
تعرض هذه الأمثلة تنوع وقوة نوع الخيار في Effect-TS للتعامل مع تسلسل العمليات. سواء كنت تتجاهل القيم باستخدام O.andThen، أو تسوية الخيارات المتداخلة باستخدام O.flatten، أو إنشاء عمليات باستخدام O.composeK، فإن هذه الأنماط تمكنك من إدارة القيم الاختيارية بشكل أكثر فعالية في سياق برمجة وظيفية. من خلال الاستفادة من هذه التقنيات، يمكنك كتابة تعليمات برمجية أكثر قوة وإيجازًا، مما يضمن أن العمليات تتعامل بأمان مع غياب القيم مع الحفاظ على منطق واضح وسهل القراءة.
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3