ホームページ >ウェブフロントエンド >jsチュートリアル >Effect-TS オプションでの do 記法の使用
Effect-TS は、do 記法を使用してオプション コンテキスト内で操作を処理する強力な方法を提供します。この記事では、do 記法を使用して複数の操作を順序付ける方法を検討し、例を通じてさまざまなシナリオを示します。
この例では、オプション コンテキスト内で値をバインドし、合計を計算し、条件に基づいてフィルター処理します。
import { Option as O, pipe } from 'effect'; function do_ex01() { const result = pipe( O.Do, O.bind('x', () => O.some(2)), // Bind x to the value 2 wrapped in Some O.bind('y', () => O.some(3)), // Bind y to the value 3 wrapped in Some O.let('sum', ({ x, y }) => x + y), // Let sum be the sum of x and y O.filter(({ x, y }) => x * y > 5) // Filter the result if x * y > 5 ); console.log(result); // Output: Some({ x: 2, y: 3, sum: 5 }) (since 2 * 3 > 5) }
説明:
条件 2 * 3 > が満たされているため、出力は Some({ x: 2, y: 3, sum: 5 }) になります。 5 が満たされています。
この例は、フィルター条件が失敗した場合、結果が None になることを示しています。
function do_ex02() { const result = pipe( O.Do, O.bind('x', () => O.some(1)), // Bind x to the value 1 wrapped in Some O.bind('y', () => O.some(2)), // Bind y to the value 2 wrapped in Some O.let('sum', ({ x, y }) => x + y), // Let sum be the sum of x and y O.filter(({ x, y }) => x * y > 5) // Filter the result if x * y > 5 ); console.log(result); // Output: None (since 1 * 2 <= 5) }
説明:
条件 1 * 2 <= 5 が失敗するため、出力は None になります。
この例は、バインディングが None の場合、結果は None になることを示しています。
function do_ex03() { const result = pipe( O.Do, O.bind('x', () => O.some(2)), // Bind x to the value 2 wrapped in Some O.bind('y', () => O.none()), // Bind y to None O.let('sum', ({ x, y }) => x + y), // This line won't execute since y is None O.filter(({ x, y }) => x * y > 5) // This line won't execute since y is None ); console.log(result); // Output: None (since y is `None`) }
説明:
バインディング (y) の 1 つが None であるため、出力は None になります。
Effect-TS の do 表記により、オプション コンテキスト内での操作のエレガントで読みやすい順序付けが可能になります。値をバインドし、計算された値を許可し、条件に基づいてフィルタリングすることにより、複雑なオプションのロジックを簡単に処理できます。上の例は、さまざまな条件と None の存在に基づいて結果がどのように変化するかを示しています。
以上がEffect-TS オプションでの do 記法の使用の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。