Ich weiß, obj.func1().func2()
das nennt man Methodenverkettung, aber was ist der Fachbegriff für:
func1(func2(), func3());
Wobei die Rückgabe einer Funktion als Argument für eine andere verwendet wird.
terminology
zhenka
quelle
quelle
obj.func1().func2() is called method chaining
- Korrektur: Es heißt ein Zugunglück.obj.func1()
immer ein Objekt zurückgegeben wird, dasfunc2()
eine Member-Funktion hat.Antworten:
Ich denke nicht, dass es Funktionsaufbau ist. Funktionszusammensetzung bedeutet, zwei oder mehr Funktionen zu übernehmen und in eine neue Funktion
f . g . h
umzuwandeln , wie in Haskell. Beachten Sie, dass an dieser Stelle keine Funktion aufgerufen wird.Persönlich würde ich Konstrukte wie
func1(func2(), func3())
"verschachtelte Funktionsaufrufe" bezeichnen.quelle
f(g())
was Sie tun, ist das Aufrufenf()
mit einem Ausdruck für das erste Argument. Der Funktionsaufrufg()
qualifiziert sich also als Ausdruck. Aber wenn es einen Namen dafür geben muss, ist dieser so nah wie möglich.In der Mathematik heißt es Funktionszusammensetzung . Ich glaube nicht, dass ich den Begriff für das Programmieren gehört habe. Dies kann daran liegen, dass die Verwendung aus einigen Gründen weitgehend vermieden wird. Es kann seltsame Fehler verursachen, wenn die Funktionen Nebenwirkungen haben, da es den Compilern freigestellt ist, func3 vor func2 auszuwerten. Es ist schwieriger zu debuggen, da Sie keine Haltepunkte setzen oder Zwischenergebnisse ausdrucken können und die meisten Leute es einfach schwerer finden zu lesen.
quelle
printf("%d %d\n", strlen(a), strlen(b));
anstatt Zwischenvariablen zu verwenden.func1(func2(func3(x)))
. Oder technisch bezieht er sich auf die Funktionen selbst: wenng(x) = f1(f2(f3(x)))
, danng
( nichtg(x)
) ist die Zusammensetzungf1
,f2
undf3
. Während ich eine Art und Weise sehen konnte, wie man die Struktur in der Frage "Funktionskomposition" nennen könnte, erscheint sie mir im mathematischen Sinne als eine sehr ungewöhnliche Verwendung des Begriffs.Wie @ Karl Bielefeldt zeigt, heißt es in Mathe Funktionskomposition.
Es gibt KEINE Fachbezeichnung für diese Sache in der Programmierung. Und ich denke, das ist eine gute Sache, denn es zeigt an, dass die Operation normal und orthogonal ist .
Orthogonalität in Programmiersprachen bedeutet, dass Sie eine Anweisung / Operation unabhängig vom Kontext verwenden können . Zum Beispiel können Sie eine Funktion / Methode auf alle folgenden Arten aufrufen, und sie würde sich genauso verhalten ...
Sie können mehr über Orthogonalität in der Programmierung auf Wikipedia lesen , und es gibt eine Frage zu StackOverflow dazu.
quelle
Ich bin wirklich nicht so gut mit Begriffen, aber ich habe gerade vor ein paar Tagen einen Artikel gelesen, der sich auf den Begriff Funktionen höherer Ordnung bezog , und hier ist eine Zusammenfassung der Definition gemäß Wikipedia:
http://en.wikipedia.org/wiki/Higher-order_function
Da dieses Szenario in diesem Fall mindestens eine Funktion als Eingabe / Parameter übernimmt, wird es meiner Meinung nach als Funktion höherer Ordnung betrachtet.
quelle
func1(func2, func3)
. Beachten Sie die fehlende Klammer.