Je sais que cela obj.func1().func2()
s'appelle le chaînage de méthodes, mais quel est le terme technique pour:
func1(func2(), func3());
Où le retour d'une fonction est utilisé comme argument pour une autre.
terminology
zhenka
la source
la source
obj.func1().func2() is called method chaining
- Correction: ça s'appelle une épave de train.obj.func1()
toujours renvoyer un objet qui afunc2()
comme fonction membre.Réponses:
Je ne pense pas que ce soit la composition des fonctions. La composition des fonctions signifie prendre deux fonctions ou plus et les transformer en une nouvelle fonction, comme
f . g . h
dans Haskell. Notez qu'aucune fonction n'est appelée à ce stade.Personnellement, je ferais référence à des constructions comme des
func1(func2(), func3())
«appels de fonction imbriqués».la source
f(g())
suffit d'appelerf()
avec une expression pour le premier argument, et il arrive que l'appel de fonction soit considérég()
comme une expression. Mais s'il doit y avoir un nom, c'est aussi proche que possible.En mathématiques, cela s'appelle la composition des fonctions . Je ne pense pas avoir entendu le terme appliqué à la programmation, cependant. Cela peut être dû au fait que l'utilisation est largement évitée pour plusieurs raisons. Il peut introduire des bogues étranges lorsque les fonctions ont des effets secondaires, car les compilateurs sont libres d'évaluer func3 avant func2. Il est plus difficile à déboguer, car vous ne pouvez pas définir de points d'arrêt ou imprimer des résultats intermédiaires, et la plupart des gens trouvent tout simplement plus difficile à lire.
la source
printf("%d %d\n", strlen(a), strlen(b));
au lieu d'utiliser des variables intermédiaires.func1(func2(func3(x)))
. Ou sur le plan technique, il fait référence aux fonctions elles - mêmes: sig(x) = f1(f2(f3(x)))
, alorsg
( nong(x)
) est la compositionf1
,f2
etf3
. Alors que je pouvais voir une façon dont vous pourriez appeler la structure dans la question «composition de la fonction», cela me semble être une utilisation très inhabituelle du terme, dans un sens mathématique.Comme le souligne @Karl Bielefeldt, cela s'appelle la composition de fonctions en mathématiques.
Il n'y a AUCUN terme technique pour cette chose dans la programmation. Et je pense que c'est une bonne chose, car cela indique que l'opération est normale et orthogonale .
L'orthogonalité dans les langages de programmation signifie que vous pouvez utiliser une instruction / opération indépendante de son contexte . Par exemple, vous pouvez appeler une fonction / méthode de toutes les manières suivantes, et elle se comporterait de la même manière ...
Vous pouvez en savoir plus sur l'orthogonalité dans la programmation sur Wikipedia , et il y a une question sur StackOverflow à ce sujet.
la source
Je ne suis vraiment pas très bon avec les termes, mais je viens de lire un article il y a quelques jours qui faisait référence au terme fonctions d'ordre supérieur , et voici un résumé de la définition par Wikipedia:
http://en.wikipedia.org/wiki/Higher-order_function
dans ce cas, puisque ce scénario prend au moins une fonction comme entrée / paramètre, il serait considéré comme une fonction d'ordre supérieur, je crois.
la source
func1(func2, func3)
. Notez la parenthèse absente.