Callable object
A callable object, in computer programming, is any object that can be called like a function.
In different languages
In C++
- pointer to function;
- pointer to member function;
- functor;
- lambda expression.
std::function
is a template class that can hold any callable object that matches its signature.
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#
- delegate;
- lambda expression.
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:[1]
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.
[2]
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'); }
[3]
In Swift
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
- ^ PHP Documentation on Magic Methods
- ^ Bösch, Florian. "What is a "callable" in Python?". StackOverflow.com. Retrieved 24 September 2017.
- ^ "A Tour of the Dart Language". www.dartlang.org. Retrieved 2019-03-25.
- ^ "Declarations — The Swift Programming Language (Swift 5.6)". docs.swift.org. Retrieved 2022-02-28.
External links
- C++ Callable concept
- v
- t
- e