2017-11-07 20 views
5

私は一時変数またはラムダを使用せずに変数を大文字小文字の区別にパイプ転送します。アイデア:F#、パイプ変数を使用せずに大文字小文字を変換

let temp = 
    x 
    |> Function1 
    |> Function2 
    // ........ Many functions later. 
    |> FunctionN 

let result = 
    match temp with 
    | Case1 -> "Output 1" 
    | Case2 -> "Output 2" 
    | _ -> "Other Output" 

私は次のような何かを書くことを望む:

// IDEAL CODE (with syntax error) 
let result = 
    x 
    |> Function1 
    |> Function2 
    // ........ Many functions later. 
    |> FunctionN 
    |> match with // Syntax error here! Should use "match something with" 
     | Case1 -> "Output 1" 
     | Case2 -> "Output 2" 
     | _ -> "Other Output" 

私が持っている最も近いものは、ラムダを使用して、以下のとおりです。しかし、私はまだ、temp変数を「命名」しているので、以下のコードはそれほど素晴らしいものではないと思います。一方

let result = 
    x 
    |> Function1 
    |> Function2 
    // ........ Many functions later. 
    |> FunctionN 
    |> fun temp -> 
     match temp with 
     | Case1 -> "Output 1" 
     | Case2 -> "Output 2" 
     | _ -> "Other Output" 

、私は直接、コードの大きな塊と「TEMP」変数を置き換えることができます。

let result = 
    match x 
      |> Function1 
      |> Function2 
      // ........ Many functions later. 
      |> FunctionN with 
    | Case1 -> "Output 1" 
    | Case2 -> "Output 2" 
    | _ -> "Other Output" 

は、それがコード#2のようなコードを書くことが可能です?あるいは、コード#3または#4のどちらかを選択する必要がありますか?ありがとうございました。

答えて

12
let result = 
    x 
    |> Function1 
    |> Function2 
    // ........ Many functions later. 
    |> FunctionN 
    |> function 
     | Case1 -> "Output 1" 
     | Case2 -> "Output 2" 
     | _ -> "Other Output" 
関連する問題