callable object

{{See also|Function object}}

{{more citations needed|date=May 2017}}

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

In different languages

= In C++ =

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

  1. include

struct Foo

{

void operator()() const

{

std::cout << "Called.";

}

};

int main()

{

Foo foo_instance;

foo_instance(); // This will output "Called." to the screen.

}

= In C# =

= In PHP =

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:[http://php.net/manual/en/language.oop5.magic.php#object.invoke PHP Documentation on Magic Methods]

class Minus

{

public function __invoke($x, $y) { return $x - $y; }

}

$a = array(3, 1, 4);

usort($a, new Minus());

= In Python =

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.

{{cite web|last1=Bösch|first1=Florian|title=What is a "callable" in Python?|url=https://stackoverflow.com/a/111255/5513567|website=StackOverflow.com|access-date=24 September 2017}}

Another example:

class Accumulator:

def __init__(self, n):

self.n = n

def __call__(self, x):

self.n += x

return self.n

= In Dart =

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');

}

{{Cite web|url=https://www.dartlang.org/guides/language/language-tour|title=A Tour of the Dart Language|website=www.dartlang.org|access-date=2019-03-25}}

= In Swift =

In Swift, callable objects are defined using callAsFunction.{{Cite web |title=Declarations — The Swift Programming Language (Swift 5.6) |url=https://docs.swift.org/swift-book/ReferenceManual/Declarations.html |access-date=2022-02-28 |website=docs.swift.org}}

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

{{Reflist}}