Dispatch table
Computer code structure with a table of pointers to functions or similar
title: "Dispatch table" type: doc version: 1 created: 2026-02-28 author: "Wikipedia contributors" status: active scope: public tags: ["method-(computer-programming)", "articles-with-example-perl-code"] description: "Computer code structure with a table of pointers to functions or similar" topic_path: "general/method-computer-programming" source: "https://en.wikipedia.org/wiki/Dispatch_table" license: "CC BY-SA 4.0" wikipedia_page_id: 0 wikipedia_revision_id: 0
::summary Computer code structure with a table of pointers to functions or similar ::
In computer science, a dispatch table is a table of pointers or memory addresses to functions or methods. Use of such a table is a common technique when implementing late binding in object-oriented programming.
It is primarily used to simplify program lines and reduce lines of code.
In different programming languages
Perl
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).
::code[lang=perl]
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
Following is a demo of implementing a dispatch table in JavaScript: ::code[lang=javascript] const thingsWeCanDo = { doThisThing() { /* behavior / }, doThatThing() { / behavior / }, doThisOtherThing() { / behavior / }, default() { / behavior */ } };
function doSomething(doWhat) { const thingToDo = Object.hasOwn(thingsWeCanDo, doWhat) ? doWhat : "default"; return thingsWeCanDothingToDo; } ::
Lua
In Lua, this behavior is supported and encouraged. Here is an example: local colors = { -- This is a lookup table improving speed and simplifying program logic red = "#ff0000", green = "#00ff00", blue = "#0000ff" }
print("Enter a color:") local choice = io.read("*l") local color = colors[choice] if color then print("Your color in Hex format is: " .. color) end
Virtual method tables
Main article: Virtual method table
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.
References
- Diomidis Spinellis (2003). Code Reading: The Open Source Perspective. Boston, MA: Addison-Wesley.
References
- "Function Dispatch Tables in C".
- Goldfuss, Alice. (2019-03-07). "Function Dispatch Tables in C".
::callout[type=info title="Wikipedia Source"] This article was imported from Wikipedia and is available under the Creative Commons Attribution-ShareAlike 4.0 License. Content has been adapted to SurfDoc format. Original contributors can be found on the article history page. ::