Home  

Random  

Nearby  



Log in  



Settings  



Donate  



About Wikipedia  

Disclaimers  



Wikipedia





Dispatch table





Article  

Talk  



Language  

Watch  

Edit  





Incomputer science, a dispatch table is a table of pointersormemory addresses to functions or methods.[1] Use of such a table is a common technique when implementing late bindinginobject-oriented programming.

Perl implementation

edit

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 implementation

edit

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[thingToDo]();
}

Virtual method tables

edit

Inobject-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 tableorvtable, and every call to a virtual method is dispatched through the vtable.

See also

edit

References

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

Retrieved from "https://en.wikipedia.org/w/index.php?title=Dispatch_table&oldid=1114563069"
 



Last edited on 7 October 2022, at 04:14  





Languages

 


Català

Tiếng Vit
 

Wikipedia


This page was last edited on 7 October 2022, at 04:14 (UTC).

Content is available under CC BY-SA 4.0 unless otherwise noted.



Privacy policy

About Wikipedia

Disclaimers

Contact Wikipedia

Code of Conduct

Developers

Statistics

Cookie statement

Terms of Use

Desktop