Articulo de referencia

Tabla de despacho

En ciencias de la computación , 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 ...

En ciencias de la computación , 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 cuando se implementa el enlace tardío en la programación orientada a objetos .

Se utiliza principalmente para simplificar las líneas del programa y reducir las líneas de código. [ 2 ]

En diferentes lenguajes de programación

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 conocidas como punteros a funciones ).

# Definir la tabla usando una referencia de código anónima y una referencia de código con nombre my %dispatch = ( "-h" => sub { return "hola\n" ; }, "-g" => \& say_goodbye ); sub say_goodbye { return "adiós\n" ; } # Obtener la referencia de código de la tabla e invocarla my $sub = $dispatch { $ARGV [ 0 ]}; print $sub ? $sub -> () : "argumento desconocido\n" ;

Al ejecutar este programa Perl de esta forma perl greet -hse producirá "hola", y al ejecutarlo de esta otra perl greet -gse producirá "adiós".

JavaScript

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

const thingsWeCanDo = { doThisThing () { /* comportamiento */ }, doThatThing () { /* comportamiento */ }, doThisOtherThing () { /* comportamiento */ }, default () { /* comportamiento */ } };function doSomething ( doWhat ) { const thingToDo = Object . hasOwn ( thingsWeCanDo , doWhat ) ? doWhat : "default" ; return thingsWeCanDo [ thingToDo ](); }

Lua

En Lua, este comportamiento está respaldado y fomentado. Aquí hay un ejemplo:

colores locales = { -- Esta es una tabla de búsqueda que mejora la velocidad y simplifica la lógica del programa rojo = "#ff0000" , verde = "#00ff00" , azul = "#0000ff" }print ( "Ingrese un color:" ) local choice = io.read ( "*l" ) local color = colors [ choice ] if color then print ( "Su color en formato hexadecimal es: " .. color ) end

Tablas de métodos virtuales

En los lenguajes de programación orientados a objetos que admiten métodos virtuales , el compilador crea automáticamente una tabla de despacho para cada objeto de una clase que contiene métodos virtuales. Esta tabla se denomina tabla de métodos virtuales o vtable , y cada llamada a un método virtual se gestiona 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 .
  2. Goldfuss, Alice (2019-03-07). "Tablas de despacho de funciones en C" . Alice Goldfuss . Recuperado el 2026-01-31 .
Obtenido de " https://en.wikipedia.org/w/index.php?title=Dispatch_table&oldid=1335882473 "