Вызываемый объект
Эта статья нуждается в дополнительных цитатах для проверки . ( май 2017 г. ) |
Вызываемый объект в компьютерном программировании — это любой объект, который можно вызвать как функцию .
На разных языках
[ редактировать ]На С++
[ редактировать ]- указатель на функцию ;
- указатель на функцию-член ;
- функтор ;
- лямбда-выражение .
std::function
— это класс шаблона , который может содержать любой вызываемый объект, соответствующий его сигнатуре.
В C++ любой класс, который перегружает оператор вызова функции. operator()
может быть вызван с использованием синтаксиса вызова функции.
#include <iostream>
struct Foo
{
void operator()() const
{
std::cout << "Called.";
}
};
int main()
{
Foo foo_instance;
foo_instance(); // This will output "Called." to the screen.
}
В С#
[ редактировать ]В PHP
[ редактировать ]PHP 5.3+ имеет первоклассные функции , которые можно использовать, например, в качестве параметра для usort()
функция:
$a = array(3, 1, 4);
usort($a, function ($x, $y) { return $x - $y; });
В PHP 5.3+ также возможно сделать объекты вызываемыми, добавив магический __invoke()
метод для своего класса: [1]
class Minus
{
public function __invoke($x, $y) { return $x - $y; }
}
$a = array(3, 1, 4);
usort($a, new Minus());
На Python
[ редактировать ]В Python любой объект с __call__()
метод можно вызвать с использованием синтаксиса вызова функции.
class Foo:
def __call__(self):
print("Called.")
foo_instance = Foo()
foo_instance() # This will output "Called." to the screen.
Другой пример:
class Accumulator:
def __init__(self, n):
self.n = n
def __call__(self, x):
self.n += x
return self.n
В Дарте
[ редактировать ]
Вызываемые объекты определяются в Dart с помощью call()
метод.
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');
}
В Свифте
[ редактировать ]В Swift вызываемые объекты определяются с помощью 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.
Ссылки
[ редактировать ]- ^ Документация PHP по магическим методам
- ^ Бёш, Флориан. «Что такое «вызываемый объект» в Python?» . StackOverflow.com . Проверено 24 сентября 2017 г.
- ^ «Экскурсия по языку дартс» . www.dartlang.org . Проверено 25 марта 2019 г.
- ^ «Объявления — язык программирования Swift (Swift 5.6)» . docs.swift.org . Проверено 28 февраля 2022 г.
Внешние ссылки
[ редактировать ]