En informàtica, una taula d'enviament és una taula de punters o adreces de memòria a funcions o mètodes. L'ús d'aquesta taula és una tècnica comuna quan s'implementa l'enllaç tardà en la programació orientada a objectes.

Implementació de Perl A continuació es mostra una manera d'implementar una taula de distribució en Perl, utilitzant un hash per emmagatzemar referències al codi (també conegut com a punters de funció).# 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";Si executeu aquest programa Perl com perl greet -h es produirà "hola", i l'executar com a perl greet -g produirà "adéu".

Implementació de JavaScript A continuació es mostra una demostració de la implementació de la taula d'enviament en 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](); }

Taules de mètodes virtuals En llenguatges de programació orientats a objectes que admeten mètodes virtuals, el compilador crearà automàticament una taula de distribució per a cada objecte d'una classe que contingui mètodes virtuals. Aquesta taula s'anomena taula de mètodes virtuals o vtable, i cada trucada a un mètode virtual s'envia a través de la vtable.

Referències

Categoria:Llenguatges de programació