Dispatch table
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.
It is primarily used to simplify program lines and reduce lines of code.[2]
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).
# 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:
const thingsWeCanDo = {
doThisThing() { /* behavior */ },
doThatThing() { /* behavior */ },
doThisOtherThing() { /* behavior */ },
default() { /* behavior */ }
};
function doSomething(doWhat) {
const thingToDo = Object.hasOwn(thingsWeCanDo, doWhat)
? doWhat
: "default";
return thingsWeCanDo[thingToDo]();
}
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
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
References
- ^ Goldfuss, Alice. "Function Dispatch Tables in C". alicegoldfuss.com. Retrieved 23 January 2021.
- ^ Goldfuss, Alice (2019-03-07). "Function Dispatch Tables in C". Alice Goldfuss. Retrieved 2026-01-31.
- Diomidis Spinellis (2003). Code Reading: The Open Source Perspective. Boston, MA: Addison-Wesley. ISBN 0-201-79940-5
Content Disclaimer
Informasi ini disarikan dari Wikipedia dan disajikan kembali untuk tujuan edukasi. Konten tersedia di bawah lisensi CC BY-SA 3.0. Kami tidak bertanggung jawab atas ketidakakuratan data yang bersumber dari kontribusi publik tersebut.
- The information displayed on this website is sourced in part or in whole from Wikipedia and has been adapted for the purpose of restating it. We strive to provide accurate and relevant information, however:
- There is no guarantee of absolute accuracy. Wikipedia is an open, collaborative project that can be edited by anyone, so information is subject to change.
- It is not intended to constitute professional advice. The content displayed is for informational and educational purposes only. For important decisions (e.g., medical, legal, or financial), please consult a professional.
- Content copyright. Wikipedia is licensed under the Creative Commons Attribution-ShareAlike License (CC BY-SA). This means that content may be reused with appropriate attribution and shared under a similar license.
- Responsible use. Any risk arising from the use of information from this website is entirely the responsibility of the user.