2009-12-07 6 views

Répondre

8

Une façon de le faire est de passer tous les arguments dans une liste:

function(ListOfParameters)

et vous pouvez itérer sur ledit ListOfParameters. De cette façon, vous pouvez faire en sorte que votre déclaration de fonction accepte un certain nombre de "paramètres", ajoutez simplement plus de termes à la déclaration ... mais je ne suis pas sûr que ce soit ce que vous espériez. Pensez-vous dans le sens d'une liste de paramètres C vararg? Dans le cas positif, lisez le paragraphe suivant.

Vous devez vous rappeler que Erlang est basée sur la correspondance de motif. Les arguments de la fonction "declaration" servent de motif correspondant lorsqu'une fonction est invoquée. Vous devrez laisser de côté votre état d'esprit «programmation procédurale» afin d'exploiter pleinement la puissance d'Erlang.

+0

première partie de votre réponse est la même que la technique comme je le disais, je pensais à quelque chose de similaire à C, donc je lu pour la deuxième partie maintenant, je dois revenir à ma première solution. Merci pour la réponse! –

+0

Mon plaisir! Amusez-vous avec Erlang! – jldupont

+0

Quel serait le meilleur pour faire ceci, si vous vouliez une liste variable d'arguments, et alors vous deviez exécuter une autre fonction tout en passant la liste variable d'arguments à cette autre fonction? – CMCDragonkai

8

beaucoup plus explicite que @jldupont: Non!

Il est pas qu'il n'a tout simplement pas été mis en œuvre, mais dans les fonctions Erlang avec le même nom, mais un nombre différent d'arguments sont considérés comme des fonctions différentes de sorte qu'il ne peut pas être ajouté.

+0

Existe-t-il un moyen de diviser une liste d'arguments et d'appliquer chaque argument à une fonction? – CMCDragonkai

+0

@CMCDragonkai Vous voulez dire appliquer la même fonction à chaque élément? Pour cette utilisation: 'lists: map' ou liste des compréhensions pour récupérer une liste de résultats; ou 'lists: foldl' pour replier les valeurs de retour dans l'appel à l'élément suivant dans la liste. – rvirding

+0

En fait, si une liste d'arguments est donnée, je veux appeler une autre fonction et passer la liste comme l'ensemble des arguments. Dans Elixir, il y a 'apply'. – CMCDragonkai

Questions connexes