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]
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-refmy%dispatch=("-h"=>sub{return"hello\n";},"-g"=>\&say_goodbye);subsay_goodbye{return"goodbye\n";}# Fetch the code ref from the table, and invoke itmy$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".
Following is a demo of implementing a dispatch table in JavaScript:
constthingsWeCanDo={doThisThing(){/* behavior */},doThatThing(){/* behavior */},doThisOtherThing(){/* behavior */},default(){/* behavior */}};functiondoSomething(doWhat){constthingToDo=Object.hasOwn(thingsWeCanDo,doWhat)?doWhat:"default";returnthingsWeCanDo[thingToDo]();}In Lua, this behavior is supported and encouraged. Here is an example:
localcolors={-- This is a lookup table improving speed and simplifying program logicred="#ff0000",green="#00ff00",blue="#0000ff"}print("Enter a color:")localchoice=io.read("*l")localcolor=colors[choice]ifcolorthenprint("Your color in Hex format is: "..color)endIn 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.