Effectivement, ce code devrait faire partie de la bibliothèque standard et aurait pu être écrit différemment... mais est tout de même logique.
Le pattern matching est une des features d'Opa.
La syntaxe actuelle est
match expr with
| pat1 -> e1
| pat2 -> e2
Les patterns sont le plus souvent des records qui sont une façon de faire du polymorphisme en Opa.
Ici { some = method } est un motif de record qui contient un champ some dont la valeur est method.
Il aurait été préférable d'écrire :
match HttpRequest.getmethod() with
| {some = {post}} ->
save_source(topic, HttpRequest.get_body()?"")
Resource.raw_status({success})
qui revient à compacter les deux pattern matching en un. Ici, on est dans le cas où getmethod renvoie un résultat et la méthode est post.
On exécute alors les deux intructions : save_source(...) et raw_status qui retourne la valeur success.
Au passage, le HttpRequest.get_body()?"" veut dire valeur de retour de get_body ou chaîne vide s'il y a une erreur.
Bien sûr, un langage doit être appris mais on s'y fait vite et si on aime, on a ensuite du mal à écrire autre chose ;)
[^] # Re: lisibilité
Posté par |-| . En réponse à la dépêche Opa, un nouveau langage pour le développement d’applications Web. Évalué à 5.
Effectivement, ce code devrait faire partie de la bibliothèque standard et aurait pu être écrit différemment... mais est tout de même logique.
Le pattern matching est une des features d'Opa.
La syntaxe actuelle est
match expr with
| pat1 -> e1
| pat2 -> e2
Les patterns sont le plus souvent des records qui sont une façon de faire du polymorphisme en Opa.
Ici { some = method } est un motif de record qui contient un champ some dont la valeur est method.
Il aurait été préférable d'écrire :
match HttpRequest.getmethod() with
| {some = {post}} ->
save_source(topic, HttpRequest.get_body()?"")
Resource.raw_status({success})
qui revient à compacter les deux pattern matching en un. Ici, on est dans le cas où getmethod renvoie un résultat et la méthode est post.
On exécute alors les deux intructions : save_source(...) et raw_status qui retourne la valeur success.
Au passage, le HttpRequest.get_body()?"" veut dire valeur de retour de get_body ou chaîne vide s'il y a une erreur.
Bien sûr, un langage doit être appris mais on s'y fait vite et si on aime, on a ensuite du mal à écrire autre chose ;)