検索
ホームページウェブフロントエンドjsチュートリアルEffect-TS のフィルタリング オプション: 実践ガイド

Filtering Options in Effect-TS: A Practical Guide

Effect-TS は、オプション内の値をフィルターするさまざまなメソッドを提供し、オプションの値に変換、述語、またはチェックを適用できるようにします。これらの関数は、None 値や指定された条件を満たさない値を破棄しながら、関連するデータのみを確実に保持するのに役立ちます。この記事では、オプションをフィルタリングするための 4 つの主要な関数、O.partitionMap、O.filterMap、O.filter、および O.exists について説明します。

例 1: O.partitionMap を使用したオプションのパーティション化

コンセプト

O.partitionMap 関数を使用すると、Either を返すマッピング関数に基づいて、オプションを 2 つのオプションのタプルに分割できます。 Each.left 値は最初のオプションに分割され、Either.right 値は 2 番目のオプションに分割されます。元のオプションが None の場合、両方のパーティションは None になります。

コード

function filtering_ex01() {
  const some = O.some(1); // Create an Option containing the value 1
  const none = O.none(); // Create an Option representing no value
  const toEither = (n: number) => (n % 2 === 0 ? E.left(n) : E.right(n));

  console.log(pipe(some, O.partitionMap(toEither))); // Output: [None, Some(1)] (1 is odd, so it goes to the right)
  console.log(pipe(none, O.partitionMap(toEither))); // Output: [None, None] (since the Option is None)
}

説明

  • pipe(some, O.partitionMap(toEither)): 1 は奇数であるため、toEither 関数は E.right(1) を返し、2 番目のオプションに 1 を入れます。結果は [None, Some(1) ].
  • pipe(none, O.partitionMap(toEither)): 元の Option が None であるため、両方のパーティションが None となり、[None, None] となります。

この関数は、値を 2 つのグループ (条件を満たすグループと満たさないグループ) に分けながら分類するマッピングを適用する必要がある場合に便利です。

例 2: O.filterMap を使用したマッピングとフィルタリング

コンセプト

O.filterMap 関数は、Option 内の値に変換関数を適用します。関数が Some を返した場合、値は保持されます。 None が返された場合、値はフィルターで除外されます。元のオプションが None の場合、結果は None のままです。

コード

function filtering_ex02() {
  const some = O.some(1); // Create an Option containing the value 1
  const none = O.none(); // Create an Option representing no value
  const toEven = (n: number) => (n % 2 === 0 ? O.some(n) : O.none());

  console.log(pipe(some, O.filterMap(toEven))); // Output: None (since 1 is not even)
  console.log(pipe(O.some(2), O.filterMap(toEven))); // Output: Some(2) (since 2 is even)
  console.log(pipe(none, O.filterMap(toEven))); // Output: None (since the original Option is None)
}

説明

  • pipe(some, O.filterMap(toEven)): 1 は偶数ではないため、toEven 関数は None を返し、結果は None になります。
  • pipe(O.some(2), O.filterMap(toEven)): 値 2 は偶数であるため、toEven 関数は Some(2) を返し、結果は Some(2) です。
  • pipe(none, O.filterMap(toEven)): 元の Option が None であるため、結果は None のままです。

この関数は、特定の条件に基づいてオプション内の値を変換およびフィルター処理する場合に役立ちます。

例 3: O.filter を使用した述語によるオプションのフィルター処理

コンセプト

O.filter 関数は、オプション内の値が指定された述語を満たすかどうかをチェックします。述語が満たされる場合は、元の Option が返されます。それ以外の場合は、None を返します。元のオプションが None の場合、None のままになります。

コード

function filtering_ex03() {
  const some = O.some(1); // Create an Option containing the value 1
  const none = O.none(); // Create an Option representing no value
  const isEven = (n: number) => n % 2 === 0;

  console.log(pipe(some, O.filter(isEven))); // Output: None (since 1 is not even)
  console.log(pipe(O.some(2), O.filter(isEven))); // Output: Some(2) (since 2 is even)
  console.log(pipe(none, O.filter(isEven))); // Output: None (since the original Option is None)
}

例 4: O.exists を使用した述語のチェック

コンセプト

O.exists 関数は、Option 内の値が述語を満たすかどうかをチェックし、述語を満たす場合は true、満たさない場合は false を返します。オプションが None の場合、false を返します。

コード

function filtering_ex04() {
  const some = O.some(1); // Create an Option containing the value 1
  const none = O.none(); // Create an Option representing no value
  const isEven = (n: number) => n % 2 === 0;

  console.log(pipe(some, O.exists(isEven))); // Output: false (since 1 is not even)
  console.log(pipe(O.some(2), O.exists(isEven))); // Output: true (since 2 is even)
  console.log(pipe(none, O.exists(isEven))); // Output: false (since the original Option is None)
}

説明

  • pipe(some, O.exists(isEven)): 1 が偶数ではないため、述語が満たされないため、結果は false になります。
  • pipe(O.some(2), O.exists(isEven)): 値 2 は述語を満たすため、結果は true になります。
  • pipe(none, O.exists(isEven)): オプションが None であるため、結果は false になります。

この関数は、オプション自体を変換またはフィルタリングせずに、オプション内の値が条件を満たしているかどうかを簡単に確認する必要がある場合に便利です。

結論

Effect-TS のフィルター オプションを使用すると、条件や変換に基づいてオプションの値を柔軟に処理できます。 O.partitionMap で値を分割する場合でも、O.filterMap で変換を適用する場合でも、O.filter で述語をチェックする場合でも、単に O.exists で条件を検証する場合でも、これらのツールはオプションの処理方法を制御するための堅牢な方法を提供します。これらの関数を使用すると、オプションのデータを効率的に管理し、関連する値のみを保持または処理することができます。

以上がEffect-TS のフィルタリング オプション: 実践ガイドの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
Java vs JavaScript:開発者向けの詳細な比較Java vs JavaScript:開発者向けの詳細な比較May 16, 2025 am 12:01 AM

Javaandjavascriptaredistinctlanguages:javaisusedforenterpriseandmobileapps、whilejavascriptisforinteractivewebpages.1)javaiscompiled、staticatically、andrunsonjvm.2)javascriptisisterted、dynamsornoded.3)

JavaScriptのデータ型:ブラウザとNodejsに違いはありますか?JavaScriptのデータ型:ブラウザとNodejsに違いはありますか?May 14, 2025 am 12:15 AM

JavaScriptコアデータ型は、ブラウザとnode.jsで一貫していますが、余分なタイプとは異なる方法で処理されます。 1)グローバルオブジェクトはブラウザのウィンドウであり、node.jsのグローバルです2)バイナリデータの処理に使用されるNode.jsの一意のバッファオブジェクト。 3)パフォーマンスと時間の処理にも違いがあり、環境に従ってコードを調整する必要があります。

JavaScriptコメント://および / * *を使用するためのガイドJavaScriptコメント://および / * *を使用するためのガイドMay 13, 2025 pm 03:49 PM

javascriptusestwotypesofcomments:シングルライン(//)およびマルチライン(//)

Python vs. JavaScript:開発者の比較分析Python vs. JavaScript:開発者の比較分析May 09, 2025 am 12:22 AM

PythonとJavaScriptの主な違いは、タイプシステムとアプリケーションシナリオです。 1。Pythonは、科学的コンピューティングとデータ分析に適した動的タイプを使用します。 2。JavaScriptは弱いタイプを採用し、フロントエンドとフルスタックの開発で広く使用されています。この2つは、非同期プログラミングとパフォーマンスの最適化に独自の利点があり、選択する際にプロジェクトの要件に従って決定する必要があります。

Python vs. JavaScript:ジョブに適したツールを選択するPython vs. JavaScript:ジョブに適したツールを選択するMay 08, 2025 am 12:10 AM

PythonまたはJavaScriptを選択するかどうかは、プロジェクトの種類によって異なります。1)データサイエンスおよび自動化タスクのPythonを選択します。 2)フロントエンドとフルスタック開発のためにJavaScriptを選択します。 Pythonは、データ処理と自動化における強力なライブラリに好まれていますが、JavaScriptはWebインタラクションとフルスタック開発の利点に不可欠です。

PythonとJavaScript:それぞれの強みを理解するPythonとJavaScript:それぞれの強みを理解するMay 06, 2025 am 12:15 AM

PythonとJavaScriptにはそれぞれ独自の利点があり、選択はプロジェクトのニーズと個人的な好みに依存します。 1. Pythonは、データサイエンスやバックエンド開発に適した簡潔な構文を備えた学習が簡単ですが、実行速度が遅くなっています。 2。JavaScriptはフロントエンド開発のいたるところにあり、強力な非同期プログラミング機能を備えています。 node.jsはフルスタックの開発に適していますが、構文は複雑でエラーが発生しやすい場合があります。

JavaScriptのコア:CまたはCの上に構築されていますか?JavaScriptのコア:CまたはCの上に構築されていますか?May 05, 2025 am 12:07 AM

javascriptisnotbuiltoncorc;それは、解釈されていることを解釈しました。

JavaScriptアプリケーション:フロントエンドからバックエンドまでJavaScriptアプリケーション:フロントエンドからバックエンドまでMay 04, 2025 am 12:12 AM

JavaScriptは、フロントエンドおよびバックエンド開発に使用できます。フロントエンドは、DOM操作を介してユーザーエクスペリエンスを強化し、バックエンドはnode.jsを介してサーバータスクを処理することを処理します。 1.フロントエンドの例:Webページテキストのコンテンツを変更します。 2。バックエンドの例:node.jsサーバーを作成します。

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

VSCode Windows 64 ビットのダウンロード

VSCode Windows 64 ビットのダウンロード

Microsoft によって発売された無料で強力な IDE エディター

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強力な PHP 統合開発環境