Par exemple, je veux avoir une fonction qui peut être appelée comme ceci:Comment construire des fonctions pour ne pas avoir de conflits?
foo :bar, key: "value" do
"some block value"
end
ou
foo key: "value" do
"some block value"
end
ou
foo :bar do
"some block value"
end
ou simplement
foo key: "value"
Pour commencer, la définition de la fonction ressemble à quelque chose comme ceci:
def foo(bar, opts \\ [], [do: block])
Au moment où je dois adapter le cas où je viens de passer des options mais pas le bar, je reçois erreur de compilation. Je comprends tout à fait pourquoi (opts \\ []
crée plus de fonctions qui correspondent à mon autre définition de fonction). Alors, quel est le bon travail pour permettre à cette méthode foo
de fonctionner?
Ah, brillant. N'a pas pensé à faire une fonction secondaire non ambiguë. Merci! – Grocery