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++ =
- 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
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.
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');
}
= 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}}
External links
- [https://web.archive.org/web/20151115042817/http://en.cppreference.com/w/cpp/concept/Callable C++ Callable concept]
Category:Articles with example C++ code
Category:Articles with example C Sharp code
Category:Articles with example PHP code
Category:Articles with example Python (programming language) code
Category:Articles with example Swift code
Category:Object (computer science)
{{compu-prog-stub}}