F#でこのコードを書くためのより良い方法があるかどうか私は思ったんだけど:F#パターンマッチ可変長最初の単語で区切られた単語のコマンド
let run (command : string) =
let words = command.Split [|','|]
match words.[0] with
| a when a .eignore "optionA" -> optionA words.[1] words.[2] words.[3]
| a when a .eignore "optionB" -> optionB words.[1] words.[2] words.[3] words.[4] words.[5]
| a when a .eignore "optionC" -> optionC words.[1] words.[2] words.[3] words.[4]
| a when a .eignore "optionD" -> optionD words.[1] words.[2] words.[3] words.[4]
| a when a .eignore "optionE" -> optionE words.[1] words.[2] words.[3]
| a when a .eignore "optionF" -> optionF words.[1] words.[2]
| a when a .eignore "optionG" -> optionG words.[1] words.[2] words.[3] words.[4]
| _ ->()
私はF#に新しいですし、私はこのことを感じますステートメントはかなり反復的であり、公正なビットをより良く行うことができるかもしれませんが、どこから始めるのかは本当にわかりません。
基本的にはそれが何をするかでは、コマンドがカンマで区切られた文字列の最初の部分であることで、コマンドを実行し、残りの入力であること: 例入力:
optionA,1,2,A,Test
また.eignore
だけです文字列が大文字小文字を無視して等しいかどうかをチェックするカスタム関数。
'optionA'、' optionB'などとは何ですか?入力と予想される出力を含む[最小、完全、および検証可能な例](http://stackoverflow.com/help/mcve)を提供してください。 –
入力例は 'optionA、1,2、A、Test'の上にリストされています。' optionA' 'optionB'は単なるメソッドです。出力する必要はありません。関数は何かを実行します。 –
出力が必要ない場合は、関数を次のようにリファクタリングすることができます: 'let run x =()'。 –