Callable object

See also: Function object

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

## Contents

* 1 In different languages
* 1.1 In C++
* 1.2 In C#
* 1.3 In PHP
* 1.4 In Python
* 1.5 In Dart
* 1.6 In Swift
* 2 References
* 3 External links

## 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.

import std;

struct Foo {
void operator()() const {
std::println("Called.");

int main() {
Foo instance;
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) -> None:
print("Called.")

instance: Foo = Foo()
instance()  # This will output "Called." to the screen.

[2]

Another example:

class Accumulator:
def __init__(self, n: int) -> None:
self.n = n

def __call__(self, x: int) -> int:
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

1. ↑ PHP Documentation on Magic Methods
2. ↑ Bösch, Florian. "What is a "callable" in Python?". https://stackoverflow.com/a/111255/5513567.
3. ↑ "A Tour of the Dart Language". https://www.dartlang.org/guides/language/language-tour.
4. ↑ "Declarations — The Swift Programming Language (Swift 5.6)". https://docs.swift.org/swift-book/ReferenceManual/Declarations.html.

## External links

* C++ Callable concept

0.00

(0 votes)

Original source: https://en.wikipedia.org/wiki/Callable object. Read more

|

Retrieved from "https://handwiki.org/wiki/index.php?title=Callable_object&oldid=3977999"