Dispatch table

Revision as of 15:39, 12 May 2025 by imported>Minilexikon (Group related sections under a parent section for better structure →‎In different programming languages)
(diff) ← Previous revision | Latest revision (diff) | Newer revision → (diff)

Template:Short description In computer science, a dispatch table is a table of pointers or memory addresses to functions or methods.<ref>{{#invoke:citation/CS1|citation |CitationClass=web }}</ref> Use of such a table is a common technique when implementing late binding in object-oriented programming.

In different programming languagesEdit

PerlEdit

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

<syntaxhighlight lang="perl">

  1. 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";

}

  1. Fetch the code ref from the table, and invoke it

my $sub = $dispatch{$ARGV[0]}; print $sub ? $sub->() : "unknown argument\n"; </syntaxhighlight>

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

JavaScriptEdit

Following is a demo of implementing a dispatch table in JavaScript: <syntaxhighlight lang="javascript"> const thingsWeCanDo = {

   doThisThing() { /* behavior */ },
   doThatThing() { /* behavior */ },
   doThisOtherThing() { /* behavior */ },
   default() { /* behavior */ }

};

function doSomething(doWhat) {

   const thingToDo = Object.hasOwn(thingsWeCanDo, doWhat) 
       ? doWhat 
       : "default";
   return thingsWeCanDo[thingToDo]();

} </syntaxhighlight>

Virtual method tablesEdit

{{#invoke:Labelled list hatnote|labelledList|Main article|Main articles|Main page|Main pages}} 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 alsoEdit

ReferencesEdit

Template:Reflist