stringtranslate.com

Despacho estático

En informática , el envío estático es una forma de polimorfismo que se resuelve completamente durante el tiempo de compilación . Es una forma de envío de métodos, que describe cómo un lenguaje o entorno seleccionará qué implementación de un método o función utilizar. [1]

Algunos ejemplos son las plantillas en C++ y la programación genérica en Fortran y otros lenguajes, junto con la sobrecarga de funciones (incluida la sobrecarga de operadores ). Se dice que el código está monomorfizado , con tipos de datos específicos deducidos y rastreados a través del gráfico de llamadas , para instanciar versiones específicas de funciones genéricas y seleccionar llamadas de funciones específicas en función de las definiciones proporcionadas.

Esto contrasta con el envío dinámico , que se basa en información de tiempo de ejecución (como punteros vtable y otras formas de información de tipo de tiempo de ejecución).

El envío estático es posible porque existe la garantía de que siempre habrá una única implementación del método en cuestión. El envío estático suele ser más rápido que el envío dinámico, que por naturaleza tiene una mayor sobrecarga.

Ejemplo en Rust

En óxido . [2]

rasgo Hablar { fn hablar ( & self ); }    estructura  Gato ;impl Habla por Gato { fn speak ( & self ) { println! ( "¡Miau!" ); } }         fn  hablar < T : Hablar > ( mascota : T ) { mascota . hablar (); }  fn  main () { let mascota = Gato ; hablar ( mascota ); }      

Rust monomorfizará esto cuando se compile en:

fn  talk_cat ( mascota : Gato ) { mascota . hablar (); }  

Véase también

Referencias

  1. ^ Elementos de Clojure. Lulu.com. 2019. pág. 68. ISBN 9780359360581. Recuperado el 17 de julio de 2022 .
  2. ^ "Tipos de datos genéricos: el lenguaje de programación Rust". doc.rust-lang.org .