Callable object

A callable object, in computer programming, is any object that can be called like a function.

In different languages[edit]

In C++[edit]

In C++, any class that overloads the function call operator operator() may be called using function-call syntax.

#include <iostream> struct Foo {     void operator()() const     {         std::cout << "Called.";     } };  int main() {    Foo foo_instance;    foo_instance();  // This will output "Called." to the screen. } 

In C#[edit]

In PHP[edit]

PHP 5.3+ has first-class functions that can be used e.g. as parameter to the usort() function:

$a = array(3, 1, 4); usort($a, function ($x, $y) { return $x - $y; }); 

It is also possible in PHP 5.3+ to make objects invokable by adding a magic __invoke() method to their class:[1]

class Minus {     public function __invoke($x, $y) { return $x - $y; } }  $a = array(3, 1, 4); usort($a, new Minus()); 

In Python[edit]

In Python any object with a __call__() method can be called using function-call syntax.

class Foo:     def __call__(self):         print("Called.")  foo_instance = Foo() foo_instance()  # This will output "Called." to the screen. 

[2]

Another example:

class Accumulator:     def __init__(self, n):         self.n = n      def __call__(self, x):         self.n += x         return self.n 

In Dart[edit]

Callable objects are defined in Dart using the call() method.

class WannabeFunction {   call(String a, String b, String c) => '$a $b $c!'; }  main() {   var wf = new WannabeFunction();   var out = wf("Hi","there,","gang");   print('$out'); } 

[3]

In Swift[edit]

In Swift, callable objects are defined using callAsFunction.[4]

struct CallableStruct {     var value: Int     func callAsFunction(_ number: Int, scale: Int) {         print(scale * (number + value))     } } let callable = CallableStruct(value: 100) callable(4, scale: 2) callable.callAsFunction(4, scale: 2) // Both function calls print 208. 


References[edit]

  1. ^ PHP Documentation on Magic Methods
  2. ^ Bösch, Florian. "What is a "callable" in Python?". StackOverflow.com. Retrieved 24 September 2017.
  3. ^ "A Tour of the Dart Language". www.dartlang.org. Retrieved 2019-03-25.
  4. ^ "Declarations — The Swift Programming Language (Swift 5.6)". docs.swift.org. Retrieved 2022-02-28.

External links[edit]