Un objeto invocable , en programación informática , es cualquier objeto que puede ser llamado como una función .
En diferentes idiomas
En C++
- puntero a función ;
- puntero a función miembro ;
- funtor ;
- expresión lambda .
std::functiones una clase de plantilla que puede contener cualquier objeto invocable que coincida con su firma.
En C++, cualquier clase que sobrecargue el operador de llamada de función operator()puede ser llamada usando la sintaxis de llamada de función.
#include <iostream> struct Foo { void operador ()() const { std :: cout << "Llamado." ; } };
int main () { Foo foo_instance ; foo_instance (); // Esto mostrará "Llamado." en la pantalla. }
Cª#
En PHP
PHP 5.3+ tiene funciones de primera clase que se pueden usar, por ejemplo, como parámetro de la usort()función:
$a = matriz ( 3 , 1 , 4 );
usort ( $a , función ( $x , $y ) { devolver $x - $y ; });
También es posible en PHP 5.3+ hacer que los objetos sean invocables agregando un __invoke()método mágico a su clase: [1]
clase Minus
{
función pública __invoke ( $x , $y ) { devolver $x - $y ; } }
$a = matriz ( 3 , 1 , 4 );
usort ( $a , nuevo Minus ());
En Python
En Python, cualquier objeto con un __call__()método puede ser llamado utilizando la sintaxis de llamada de función.
clase Foo :
def __call__ ( self ):
print ( "Llamado." )
foo_instance = Foo ()
foo_instance () # Esto mostrará "Llamado" en la pantalla.
[2]
Otro ejemplo:
clase Acumulador :
def __init __ ( self , n )
: self.n = n
def __call__ ( self , x ):
self . n += x
return self . n
En dardo
Los objetos invocables se definen en Dart utilizando el call()método.
clase WannabeFunction { llamar ( Cadena a , Cadena b , Cadena c ) => ' $ a $ b $ c !' ; }
main () { var wf = new WannabeFunction (); var out = wf ( "Hola" , "ahí" , "pandilla" ); print ( ' $ out ' ); }
[3]
En rápido
En Swift , los objetos invocables se definen utilizando callAsFunction. [4]
struct CallableStruct {
var valor : Int
func callAsFunction ( _ numero : Int , escala : Int ) {
print ( escala * ( numero + valor ))
}
}
let callable = CallableStruct ( valor : 100 )
callable ( 4 , escala : 2 )
callable.callAsFunction ( 4 , escala : 2 ) // Ambas llamadas de función imprimen 208.
Referencias
- ^ Documentación PHP sobre métodos mágicos
- ^ Bösch, Florian. "¿Qué es un "callable" en Python?". StackOverflow.com . Consultado el 24 de septiembre de 2017 .
- ^ "Un recorrido por el lenguaje Dart". www.dartlang.org . Consultado el 25 de marzo de 2019 .
- ^ "Declaraciones: el lenguaje de programación Swift (Swift 5.6)". docs.swift.org . Consultado el 28 de febrero de 2022 .
Enlaces externos
- Concepto de llamada en C++