Comment gérer un nombre non spécifié de paramètres dans Scheme?
Par exemple ((fn-stringappend string-append) "a" "b" "c")
je sais comment gérer ce (f x y z)
. Mais que faire si il n'y a qu'un nombre indéterminé de paramètres? Est-il possible de gérer ce genre de problème?
source d'informationauteur John
Vous devez vous connecter pour publier un commentaire.
Dans le Schéma, vous pouvez utiliser la notation par points pour la déclaration d'une procédure qui reçoit un nombre variable d'arguments (aussi connu comme varargs ou variadic fonction):
À l'intérieur de
procedure
args
sera une liste de zéro ou plusieurs arguments passés; l'appeler comme ceci:Comme l'a souligné @Arafinwe, voici l'équivalent de la notation pour un anonyme procédure:
L'appeler comme ceci:
N'oubliez pas que si vous avez besoin de passer les paramètres dans une liste de taille inconnue à un variadic fonction, vous pouvez l'écrire comme ceci:
Mise à JOUR:
Concernant le code dans les commentaires, cela ne fonctionne pas comme vous le souhaitez:
Je crois que tu voulais dire ceci:
Avec un peu de sucre syntaxique la procédure ci-dessus peut être simplifiée:
Mais c'est juste un long chemin pour simplement écrit:
Est-ce que vous avez besoin?
Parce que de toute façon c'est équivalente à la suivante:
string-append
déjà reçoit zéro ou plusieurs arguments (au moins, c'est le cas dans la Raquette)En plus d'Oscar López de réponse, vous pouvez également faire une fonction anonyme de variable d'arguments comme:
Où, encore une fois, à l'intérieur de la
lambda
args
une liste des arguments passés.