Jump to content

Вызываемый объект

Вызываемый объект в компьютерном программировании — это любой объект, который можно вызвать как функцию .

На разных языках

[ редактировать ]

В 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 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 любой объект с __call__() метод можно вызвать с использованием синтаксиса вызова функции.

class Foo:
    def __call__(self):
        print("Called.")

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

[2]

Другой пример:

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');
}

[3]

В Свифте

[ редактировать ]

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


  1. ^ Документация PHP по магическим методам
  2. ^ Бёш, Флориан. «Что такое «вызываемый объект» в Python?» . StackOverflow.com . Проверено 24 сентября 2017 г.
  3. ^ «Экскурсия по языку дартс» . www.dartlang.org . Проверено 25 марта 2019 г.
  4. ^ «Объявления — язык программирования Swift (Swift 5.6)» . docs.swift.org . Проверено 28 февраля 2022 г.
[ редактировать ]


Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: faae5f64d9fae3cc08320a70cb11cd38__1718720220
URL1:https://arc.ask3.ru/arc/aa/fa/38/faae5f64d9fae3cc08320a70cb11cd38.html
Заголовок, (Title) документа по адресу, URL1:
Callable object - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)