Dispatch table

From Wikipedia the free encyclopedia

In computer science, a dispatch table is a table of pointers or memory addresses to functions or methods.[1] Use of such a table is a common technique when implementing late binding in object-oriented programming.

Perl implementation[edit]

The following shows one way to implement a dispatch table in Perl, using a hash to store references to code (also known as function pointers).

# Define the table using one anonymous code-ref and one named code-ref my %dispatch = (     "-h" => sub {  return "hello\n"; },     "-g" => \&say_goodbye );   sub say_goodbye {     return "goodbye\n"; }   # Fetch the code ref from the table, and invoke it my $sub = $dispatch{$ARGV[0]}; print $sub ? $sub->() : "unknown argument\n"; 

Running this Perl program as perl greet -h will produce "hello", and running it as perl greet -g will produce "goodbye".

JavaScript implementation[edit]

Following is a demo of implementing dispatch table in JavaScript:

var thingsWeCanDo = {     doThisThing      : function() { /* behavior */ },     doThatThing      : function() { /* behavior */ },     doThisOtherThing : function() { /* behavior */ },     default          : function() { /* behavior */ } };  var doSomething = function(doWhat) {     var thingToDo = thingsWeCanDo.hasOwnProperty(doWhat) ? doWhat : "default"     thingsWeCanDo[thingToDo](); } 

Virtual method tables[edit]

In object-oriented programming languages that support virtual methods, the compiler will automatically create a dispatch table for each object of a class containing virtual methods. This table is called a virtual method table or vtable, and every call to a virtual method is dispatched through the vtable.

See also[edit]

References[edit]

  1. ^ Goldfuss, Alice. "Function Dispatch Tables in C". alicegoldfuss.com. Retrieved 23 January 2021.