stringtranslate.com

Таблица рассылок

В информатике таблица диспетчеризации — это таблица указателей или адресов памяти для функций или методов . [1] Использование такой таблицы является распространенным приемом при реализации позднего связывания в объектно-ориентированном программировании .

Реализация Perl

Ниже показан один из способов реализации таблицы диспетчеризации в Perl с использованием хэша для хранения ссылок на код (также известных как указатели функций ).

# Определить таблицу, используя одну анонимную ссылку на код и одну именованную ссылку на код my %dispatch = ( "-h" => sub { return "hello\n" ; }, "-g" => \& say_goodbye ); sub say_goodbye { return "goodbye\n" ; } # Извлечь ссылку на код из таблицы и вызвать ее my $sub = $dispatch { $ARGV [ 0 ]}; print $sub ? $sub -> () : "unknown argument\n" ;                           

Запуск этой программы Perl как perl greet -hвернет «hello», а запуск ее как perl greet -gвернет «goodbye».

Реализация JavaScript

Ниже приведена демонстрация реализации таблицы диспетчеризации в JavaScript:

const thingsWeCanDo = { doThisThing () { /* поведение */ }, doThatThing () { /* поведение */ }, doThisOtherThing () { /* поведение */ }, default () { /* поведение */ } };                   function doSomething ( doWhat ) { const thingToDo = Object . hasOwn ( thingsWeCanDo , doWhat ) ? doWhat : "default" ; return thingsWeCanDo [ thingToDo ](); }               

Таблицы виртуальных методов

В объектно-ориентированных языках программирования , поддерживающих виртуальные методы , компилятор автоматически создаст таблицу диспетчеризации для каждого объекта класса, содержащего виртуальные методы. Эта таблица называется таблицей виртуальных методов или vtable , и каждый вызов виртуального метода диспетчеризируется через vtable.

Смотрите также

Ссылки

  1. ^ Голдфусс, Элис. «Таблицы диспетчеризации функций в C». alicegoldfuss.com . Получено 23 января 2021 г. .