Wywoływalny obiekt
Obiekt wywoływalny w programowaniu komputerowym to dowolny obiekt, który można wywołać jak funkcję .
W różnych językach
W C++
- wskaźnik do funkcji ;
- wskaźnik do funkcji członkowskiej ;
- funktor ;
- wyrażenie lambda .
-
std::function
to klasa szablonu , która może przechowywać dowolny wywoływalny obiekt pasujący do jego podpisu.
W C++ każdą klasę, która przeciąża operator wywołania funkcji operator()
można wywołać przy użyciu składni wywołania funkcji.
#include <iostream> struct Foo { void operator ()() const { std :: cout << "Wywołano." ; } }; int main () { Foo foo_instance ; foo_instancja (); // Spowoduje to wyświetlenie komunikatu „Called”. do ekranu. }
w języku C#
w PHP
PHP 5.3+ ma pierwszorzędne funkcje , których można użyć np. jako parametru funkcji usort()
:
$a = tablica ( 3 , 1 , 4 ); usort ( $a , funkcja ( $x , $y ) { return $x - $y ; });
Możliwe jest również w PHP 5.3+ uczynienie obiektów wywoływalnymi przez dodanie magicznej metody __invoke()
do ich klasy:
class Minus { funkcja publiczna __invoke ( $x , $y ) { return $x - $y ; } } $a = tablica ( 3 , 1 , 4 ); usort ( $a , nowy Minus ());
W Pythonie
W Pythonie każdy obiekt z metodą __call__()
można wywołać przy użyciu składni wywołania funkcji.
class Foo : def __call__ ( self ): print ( "Called." ) foo_instance = Foo () foo_instance () # Spowoduje to wyświetlenie "Called." do ekranu.
Inny przykład:
class Akumulator : def __init__ ( self , n ): self . n = n def __call__ ( ja , x ): ja . n += x zwróć siebie . N
w Darcie
Aby umożliwić wywoływanie klasy Dart jak funkcji, zaimplementuj metodę call()
.
class WannabeFunction { call ( String a , String b , String c ) => ' $ a $ b $ c !' ; } main () { var wf = new WannabeFunction (); var out = wf ( "Cześć" , "tam" , "gang" ); print ( ' $ out ' ); }
W Swiftie
W Swift obiekty wywoływalne są definiowane za pomocą callAsFunction
.
struct CallableStruct { var value : Int func callAsFunction ( _ liczba : Int , skala : Int ) { print ( skala * ( liczba + wartość )) } } let callable = CallableStruct ( wartość : 100 ) callable ( 4 , scale : 2 ) callable . callAsFunction ( 4 , skala : 2 ) // Oba wywołania funkcji print 208.
Linki zewnętrzne
Kategorie: