Despacho estático

Na computação , o despacho estático é uma forma de polimorfismo totalmente resolvida durante o tempo de compilação . É uma forma de envio de método, que descreve como uma linguagem ou ambiente selecionará qual implementação de um método ou função usar. [1]

Exemplos são modelos em C++ , e programação genérica em Fortran e outras linguagens, em conjunto com sobrecarga de funções (incluindo sobrecarga de operadores ). Diz-se que o código é monomorfizado , com tipos de dados específicos deduzidos e rastreados através do gráfico de chamadas , a fim de instanciar versões específicas de funções genéricas e selecionar chamadas de funções específicas com base nas definições fornecidas.

Isso contrasta com o despacho dinâmico , que é baseado em informações de tempo de execução (como ponteiros vtable e outras formas de informações de tipo de tempo de execução).

O despacho estático é possível porque há uma garantia de que haverá apenas uma única implementação do método em questão. O despacho estático é normalmente mais rápido do que o despacho dinâmico, que por natureza tem uma sobrecarga maior.

Exemplo em ferrugem

Em ferrugem . [2]

traço Falar { fn falar ( & self ); }  
     


estrutura  Gato ;

impl Fale por Cat { fn fale ( & self ) { println! ( "Miau!" ); } }    
      
        
    


fn  talk < T : Fala > ( pet : T ) { pet . falar (); } 
    


fn  main () { deixe pet = gato ; falar ( animal de estimação ); } 
       
    

Rust irá monomorfizar isso quando compilado em:

fn  talk_cat ( pet : Gato ) { pet . falar (); } 
    

Veja também

Referências

  1. ^ Elementos de Clojure. Lulu. com. 2019. pág. 68. ISBN 9780359360581. Recuperado em 17 de julho de 2022 .
  2. ^ "Tipos de dados genéricos - a linguagem de programação Rust" . doc.rust-lang.org .
  • https://developer.apple.com/swift/blog/?id=27


Obtido em "https://en.wikipedia.org/w/index.php?title=Static_dispatch&oldid=1189667290"