Wiem, że obj.func1().func2()
nazywa się to łączeniem metod, ale jaki jest termin techniczny na:
func1(func2(), func3());
Gdzie zwracanie funkcji jest używane jako argument do innego.
terminology
zhenka
źródło
źródło
obj.func1().func2() is called method chaining
- Korekta: nazywa się to wrakiem pociągu.obj.func1()
zawsze zwraca obiekt, który pełnifunc2()
funkcję członka.Odpowiedzi:
Nie sądzę, żeby była to kompozycja funkcji. Kompozycja funkcji oznacza przejęcie dwóch lub więcej funkcji i przekształcenie ich w nową funkcję, jak
f . g . h
w Haskell. Zauważ, że w tym momencie nie jest wywoływana żadna funkcja.Osobiście odnosiłbym się do konstrukcji takich
func1(func2(), func3())
jak „zagnieżdżone wywołania funkcji”.źródło
f(g())
zadzwonićf()
z wyrażeniem pierwszego argumentu i tak się dzieje, że wywołanie funkcjig()
kwalifikuje się jako wyrażenie. Ale jeśli musi być na to nazwa, jest tak blisko, jak to tylko możliwe.W matematyce nazywa się to składem funkcji . Wydaje mi się jednak, że nie słyszałem o tym znaczeniu w programowaniu. Może to wynikać z tego, że korzystanie jest w dużej mierze unikane z kilku powodów. Może wprowadzać dziwne błędy, gdy funkcje mają skutki uboczne, ponieważ kompilatory mają swobodę oceny func3 przed func2. Trudniej jest debugować, ponieważ nie można ustawić punktów przerwania ani wydrukować wyników pośrednich, a większości osób po prostu trudniej jest odczytać.
źródło
printf("%d %d\n", strlen(a), strlen(b));
zamiast używać zmiennych pośrednich.func1(func2(func3(x)))
. Lub technicznie, to odnosi się do funkcji sobie pytanie: jeślig(x) = f1(f2(f3(x)))
, tog
( nieg(x)
) jest składf1
,f2
orazf3
. Chociaż widziałem sposób, w jaki można nazwać strukturę w pytaniu „kompozycja funkcji”, uderza mnie to bardzo nietypowe użycie tego terminu, w sensie matematycznym.Jak wskazuje @Karl Bielefeldt, w Math nazywa się to składaniem funkcji.
W programowaniu nie ma ŻADNEGO terminu technicznego. I myślę, że jest to dobra rzecz, ponieważ wskazuje, że operacja jest normalna i ortogonalna .
Ortogonalność w językach programowania oznacza, że możesz używać instrukcji / operacji niezależnie od jej kontekstu . Na przykład możesz wywołać funkcję / metodę na wszystkie poniższe sposoby i zachowa się tak samo ...
Możesz przeczytać więcej na temat Ortogonalności w Programowaniu na Wikipedii , a na tej stronie jest pytanie dotyczące StackOverflow .
źródło
Naprawdę nie jestem zbyt dobry w terminach, ale kilka dni temu właśnie przeczytałem artykuł, który odwoływał się do terminu Funkcje wyższego rzędu , a oto streszczenie definicji z Wikipedii:
http://en.wikipedia.org/wiki/Higher-order_function
więc w tym przypadku, ponieważ ten scenariusz przyjmuje co najmniej jedną funkcję jako parametr wejściowy / parametr, uważam, że będzie to funkcja wyższego rzędu.
źródło
func1(func2, func3)
. Zwróć uwagę na nieobecny nawias.