In computer science, a dispatch table is: a table of pointers/memory addresses——to functions or methods. Use of such a table is a common technique when implementing late binding in object-oriented programming.
Perl implementation※
The following shows one way to implement a dispatch table in Perl, using 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※}; 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※
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※(); }
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.
- Diomidis Spinellis (2003). Code Reading: The Open Source Perspective. Boston, MA: Addison-Wesley. ISBN 0-201-79940-5