stringtranslate.com

Mesa de despacho

En informática , una tabla de despacho es una tabla de punteros o direcciones de memoria a funciones o métodos . [1] El uso de dicha tabla es una técnica común al implementar el enlace tardío en la programación orientada a objetos .

Implementación de Perl

A continuación se muestra una forma de implementar una tabla de despacho en Perl , utilizando un hash para almacenar referencias al código (también conocidos como punteros de función ).

# Defina la tabla utilizando una referencia de código anónima y una referencia de código nombrada my %dispatch = ( "-h" => sub { return "hello\n" ; }, "-g" => \& say_goodbye ); sub say_goodbye { return "goodbye\n" ; } # Obtenga la referencia de código de la tabla e invoquela my $sub = $dispatch { $ARGV [ 0 ]}; print $sub ? $sub -> () : "argumento desconocido\n" ;                           

Ejecutar este programa Perl como perl greet -hproducirá "hola", y ejecutarlo como perl greet -gproducirá "adiós".

Implementación de JavaScript

A continuación se muestra una demostración de cómo implementar la tabla de despacho en JavaScript:

var thingsWeCanDo = { doThisThing : función () { /* comportamiento */ }, doThatThing : función () { /* comportamiento */ }, doThisOtherThing : función () { /* comportamiento */ }, predeterminado : función () { /* comportamiento */ } };                           var doSomething = function ( doWhat ) { var thingToDo = thingsWeCanDo . hasOwnProperty ( doWhat ) ? doWhat : "predeterminado" thingsWeCanDo [ thingToDo ](); }             

Tablas de métodos virtuales

En los lenguajes de programación orientados a objetos que admiten métodos virtuales , el compilador creará automáticamente una tabla de distribución para cada objeto de una clase que contenga métodos virtuales. Esta tabla se denomina tabla de métodos virtuales o vtable , y cada llamada a un método virtual se distribuye a través de la vtable.

Véase también

Referencias

  1. ^ Goldfuss, Alice. "Tablas de despacho de funciones en C". alicegoldfuss.com . Consultado el 23 de enero de 2021 .