Est-ce que tout le monde peut m'expliquer cette pièce de code?
let safe_division n = function | 0 -> failwith "divide by 0" | m -> n / m
4 Réponses :
function | 0 -> failwith "divide by 0" | m -> n / m
Lorsque vous exécutez Ceci est une fonction Si le deuxième argument était, par exemple, Safe_Division 3 0 code>, tout d'abord,
3 code> est lié au nom
n code> et le côté droit de la déclaration est puis évalué. p>
code>, donc l'argument suivant,
0 code> est apparié contre les différents cas, dans l'ordre. Ici, il correspond au premier cas, de sorte que le côté droit est évalué et une exception est lancée. Dans ce cas, le nom
m code> n'est jamais lié à rien. P>
1 code>, il aurait alors correspondre le second cas (ce cas correspond à toutes les valeurs possibles de toute façon, c'est un cas par défaut), liant le nom
M code> à la valeur
1 code> puis renvoyé le résultat de
n / m code>. p>
Il est facile de voir ce que cela signifie une fois que vous réalisez que
let safe_division = function n -> function | 0 -> failwith "divide by 0" | m -> n / m
let safe_division n = fun x -> match x with | 0 -> failwith "divide by 0" | m -> n / m