Question

Duplicata possible:
F #] Comment avoir deux méthodes qui s'appellent?

Bonjour à tous,

J'ai un scénario où j'ai deux fonctions qui bénéficieraient d'être mutuellement récursives, mais je ne sais pas vraiment comment le faire dans F #

Mon scénario n'est pas aussi simple que le code suivant, mais j'aimerais obtenir quelque chose de similaire à la compilation:

let rec f x =
  if x>0 then
    g (x-1)
  else
    x

let rec g x =
  if x>0 then
    f (x-1)
  else
    x
Était-ce utile?

La solution

Vous pouvez aussi utiliser let rec ... and formulaire:

let rec f x =
  if x>0 then
    g (x-1)
  else
    x

and g x =
  if x>0 then
    f (x-1)
  else
    x

Autres conseils

Pour obtenir des fonctions mutuellement récursives, passez simplement l'un à l'autre comme paramètre

let rec f g x =
  if x>0 then
    g (x-1)
  else
    x

let rec g x =
  if x>0 then
    f g (x-1)
  else
    x

Utilisez le let rec ... and ... construction:

let rec f x =
  if x>0 then
    g (x-1)
  else
    x

and g x =
  if x>0 then
    f (x-1)
  else
    x
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top