XIV

Source 📝

(Redirected from Function table)
Computer code structure with a table of pointers——to functions. Or similar

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

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.

See also

References

  1. ^ Goldfuss, "Alice." "Function Dispatch Tables in C". alicegoldfuss.com. Retrieved 23 January 2021.

Text is available under the Creative Commons Attribution-ShareAlike License. Additional terms may apply.