F#で異なるパラメーターを持つパイプライン関数

ジェイミー・ディクソン

私は次のコードを持っています:

type CustomerStatus = |Valid |Invalid 
type Customer = {Id:int; FirstName: string; LastName:string; Status: CustomerStatus}

let checkCustomerFirstName (customers: Customer seq) =
    customers

let checkCustomerLastName (customers: Customer seq) =
    customers

let checkCustomerInBlockedList (customers: Customer seq) (blockedList: string seq) =
    customers

Customerレコードタイプには、Id、FirstName、LastName、およびStatusの4つの属性があります。CustomerStatusは、上記の行で有効および無効のDUとして定義されています。次に、顧客のシーケンスを検証するための3つの関数があります。簡潔にするために、関数本体は省略しました。3番目の関数が2番目のパラメーター(顧客の名前が無効かどうかを確認するために比較される文字列のリスト)を受け取ることに注意してください。

ここにいくつかのテストデータがあります:

let customers =
    [
        {Id=0;LastName="Customer0";FirstName="Test";CustomerClass=Valid}
        {Id=1;LastName="Customer1";FirstName="Test";CustomerClass=Valid}
        {Id=2;LastName="Customer2";FirstName="Test";CustomerClass=Valid}
        {Id=3;LastName="Customer3";FirstName="Test";CustomerClass=Valid}
        {Id=4;LastName="Customer4";FirstName="Test";CustomerClass=Valid}
    ]

let blockedList = ["Customer3"]

最初の2つの関数を次のようにパイプライン処理すると、次のようになります。

customers
|> checkCustomerFirstName
|> checkCustomerLastName

すべてが期待どおりに機能します。ただし、3番目の関数を追加すると、

customers
|> checkCustomerFirstName
|> checkCustomerLastName
|> checkCustomerInBlockedList blockedList

このようなエラーが発生します

ここに画像の説明を入力してください

追加のパラメーターを持つ関数をパイプライン化するにはどうすればよいですか?

3615

最後のメソッドパラメータの順序を変更してみてください。

let checkCustomerInBlockedList (blockedList: string seq) (customers: Customer seq) =
    customers

フォワードパイプ演算子は、左側にあるパラメータを右側の関数に送信します。最後の呼び出しの場合、または左側に顧客のシーケンスがありますが、右側にパラメーターを持つメソッドがあるため、シーケンスは最後のパラメーターとして提供されます。

最後のステートメントはcheckCustomerInBlockedList blockedList customers、パラメーターの順序を変更するとコンパイラーが満足する理由のように見えます。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

異なるパラメーターサブタイプを持つJulia関数

分類Dev

複数のパラメーターを持つF#後方パイプライン演算子

分類Dev

F#-異なるパラメーターを持つ同じ関数

分類Dev

異なるパラメーターを持つ抽象関数

分類Dev

DockerRUN異なるパラメータを持つイメージの複数のインスタンス

分類Dev

複数のパラメーターを持つF#関数をFuncタイプに変換する-MathNet.Numerics

分類Dev

F#パラメーターを高階関数にパイプするか、独自の関数を宣言する

分類Dev

異なるタイプの複数のパラメーターを持つ関数に、オーバーロードせずにパラメーターを任意の順序で取得させることは可能ですか?

分類Dev

パラメータとして異なるArrayListタイプを持つコンストラクタ

分類Dev

異なる構造体ポインターを持つ関数のSwigラッパー

分類Dev

C#デリゲート-最初に異なるパラメーター(同じタイプ)を持つ複数の関数でデリゲートをバインドし、次にそれらを後で起動/呼び出す方法は?

分類Dev

タイプと引数の長さが異なる可能性がある場合、「パラメーターを持つ関数」をパラメーターとして渡すにはどうすればよいですか?

分類Dev

オプションのパラメーターを持つワークシートIF()関数の構文がUDFと異なるのはなぜですか?

分類Dev

2つの異なるタイプをC#の関数パラメーターに渡す方法は?

分類Dev

Qt&C ++:異なる戻り値とパラメーター型を持つ関数ポインターの配列

分類Dev

変数のパラメーター化とタイプを持つC関数ポインター

分類Dev

1つのパラメーターを持つjQueryイージング関数

分類Dev

異なるメソッドパラメータを持つJavaインターフェイス

分類Dev

テンプレートパラメーター-可変引数を持つ関数ポインター

分類Dev

2つの異なるタイプの数値変数に `std :: max()`関数を使用すると、c ++コンパイラでエラーが発生する理由

分類Dev

struct内にstructパラメーターを持つ関数ポインター

分類Dev

入力として異なるテンプレートパラメータを持つテンプレートクラスのフレンド関数

分類Dev

C ++:特定の(double ...)ポインターパラメーターを持つ関数でvoid *関数を使用して関数をオーバーロードする

分類Dev

Typescript:関数のマップを異なるタイプパラメータを持つ同様の関数に変換する関数を厳密に型指定するにはどうすればよいですか?

分類Dev

F#タイプをC#関数パラメーターとして使用できません

分類Dev

F#でボックス化されていない複数パラメータイベントタイプ

分類Dev

別の関数c#内でパラメータタイプを持つ関数を呼び出す

分類Dev

Azure DevOpsリリースパイプラインで、異なるターゲットフォルダーを持つデプロイメントグループを複数のVMにどのようにデプロイしますか

分類Dev

テンプレートの特殊化:Tとは異なるパラメーターを持つメンバー関数

Related 関連記事

  1. 1

    異なるパラメーターサブタイプを持つJulia関数

  2. 2

    複数のパラメーターを持つF#後方パイプライン演算子

  3. 3

    F#-異なるパラメーターを持つ同じ関数

  4. 4

    異なるパラメーターを持つ抽象関数

  5. 5

    DockerRUN異なるパラメータを持つイメージの複数のインスタンス

  6. 6

    複数のパラメーターを持つF#関数をFuncタイプに変換する-MathNet.Numerics

  7. 7

    F#パラメーターを高階関数にパイプするか、独自の関数を宣言する

  8. 8

    異なるタイプの複数のパラメーターを持つ関数に、オーバーロードせずにパラメーターを任意の順序で取得させることは可能ですか?

  9. 9

    パラメータとして異なるArrayListタイプを持つコンストラクタ

  10. 10

    異なる構造体ポインターを持つ関数のSwigラッパー

  11. 11

    C#デリゲート-最初に異なるパラメーター(同じタイプ)を持つ複数の関数でデリゲートをバインドし、次にそれらを後で起動/呼び出す方法は?

  12. 12

    タイプと引数の長さが異なる可能性がある場合、「パラメーターを持つ関数」をパラメーターとして渡すにはどうすればよいですか?

  13. 13

    オプションのパラメーターを持つワークシートIF()関数の構文がUDFと異なるのはなぜですか?

  14. 14

    2つの異なるタイプをC#の関数パラメーターに渡す方法は?

  15. 15

    Qt&C ++:異なる戻り値とパラメーター型を持つ関数ポインターの配列

  16. 16

    変数のパラメーター化とタイプを持つC関数ポインター

  17. 17

    1つのパラメーターを持つjQueryイージング関数

  18. 18

    異なるメソッドパラメータを持つJavaインターフェイス

  19. 19

    テンプレートパラメーター-可変引数を持つ関数ポインター

  20. 20

    2つの異なるタイプの数値変数に `std :: max()`関数を使用すると、c ++コンパイラでエラーが発生する理由

  21. 21

    struct内にstructパラメーターを持つ関数ポインター

  22. 22

    入力として異なるテンプレートパラメータを持つテンプレートクラスのフレンド関数

  23. 23

    C ++:特定の(double ...)ポインターパラメーターを持つ関数でvoid *関数を使用して関数をオーバーロードする

  24. 24

    Typescript:関数のマップを異なるタイプパラメータを持つ同様の関数に変換する関数を厳密に型指定するにはどうすればよいですか?

  25. 25

    F#タイプをC#関数パラメーターとして使用できません

  26. 26

    F#でボックス化されていない複数パラメータイベントタイプ

  27. 27

    別の関数c#内でパラメータタイプを持つ関数を呼び出す

  28. 28

    Azure DevOpsリリースパイプラインで、異なるターゲットフォルダーを持つデプロイメントグループを複数のVMにどのようにデプロイしますか

  29. 29

    テンプレートの特殊化:Tとは異なるパラメーターを持つメンバー関数

ホットタグ

アーカイブ