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++

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