La fonction de la version est un raccourci pour la correspondance complète de la syntaxe dans le cas particulier où le match déclaration est l'ensemble de la fonction et de la fonction n'a qu'un seul argument (tuples comptent pour un). Si vous voulez avoir deux arguments, alors vous devez utiliser la correspondance complète de la syntaxe*. Vous pouvez les voir dans les types des deux fonctions suivantes.
//val match_test : string -> string -> string
let match_test x y = match x, y with
| "A", _ -> "Hello A"
| _, "B" -> "Hello B"
| _ -> "Hello ??"
//val function_test : string * string -> string
let function_test = function
| "A", _ -> "Hello A"
| _, "B" -> "Hello B"
| _ -> "Hello ??"
Comme vous pouvez le voir match version prend deux arguments alors que la version fonction prend un seul tupled argument. J'utilise la fonction de la version pour la plupart un seul argument fonctions car je trouve la syntaxe de la fonction semble plus propre.
*Si vous avez vraiment envie de vous pouvez obtenir la fonction de la version de la signature, mais il a l'air assez moche à mon avis - voir l'exemple ci-dessous.
//val function_match_equivalent : string -> string -> string
let function_match_equivalent x y = (x, y) |> function
| "A", _ -> "Hello A"
| _, "B" -> "Hello B"
| _ -> "Hello ??"