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">
- 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"; </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
- Diomidis Spinellis (2003). Code Reading: The Open Source Perspective. Boston, MA: Addison-Wesley. Template:ISBN