Edge Rewrite
// HTMLRewriter · presentation

This page was redesigned at the edge.

Cloudflare fetched the original article and streamed it through HTMLRewriter to apply an entirely new visual system without rebuilding the source page.

Jump to content

Callable object

From Wikipedia, the free encyclopedia

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.

import std;

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

int main() {
   Foo instance;
   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) -> 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

[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.
[edit]