Explicação para a chamada?
digitalizando a internet, estou tendo dificuldade em entender de uma maneira simples - o termo call-site (@dlr). tenho estado a ler aqui esse local é:
Um site diz:Um livro diz:o local em que o método é chamado.
Ligue para o local . Este é o tipo de átomo do DLR - a menor peça de Code quepodem ser considerados como uma única unidade. Uma expressão pode contém um monte de sites de chamadas, mas o behavioris construído no forma natural, avaliando um local de chamada de cada vez. Para o resto da discussão, só vamos analisar um único local de chamada de cada vez. É ... vai ser útil para ter um pequeno exemplo de um site de chamada para se referir para, então aqui está uma muito simples, onde d é, claro, uma variável de tipo dinâmicoOutro livro diz:D. Foo(10); o sítio de chamada é representado em código como a Sistema.Execucao.CompilerServices.Local de chamada.
A compilador emite código que eventualmente resulta em uma árvore de expressões isto descreve a operação, gerida por um site de chamada que o DLR irá amarrar em tempo de execução. O sítio de chamada funciona essencialmente como intermediário entre o chamador e a callee.
desculpa , eu não posso ver onde essas 3 explicações se combinam numa explicação simples.
Terei todo o gosto em obter uma explicação simples:Como posso explicar a minha mulher-o que são os call-sites ?
2 answers
A primeira explicação não tem nada a ver com o dlr ou o tipo dinâmico: simplesmente falando, um site de chamada é um local (ou site) no código fonte onde um método é chamado.
Ao implementar o tipo dinâmico, é necessário armazenar informações sobre as chamadas do método dinâmico contidas no seu código, para que possam ser invocadas em tempo de execução (o dlr precisa de procurar o método, resolver cargas excessivas, etc.). Parece natural que o objecto que representa esta informação também deve ser chamado de "site de chamada".
Para este exemplo a chamada é simplesmente como um método ou função que executa algum código e retorna.
Para um programa de tempo de execução de linguagem estática (C, ou CLR etc) um site de chamada é essencialmente onde uma chamada de função ocorre. É o local para o qual a chamada retornará em um fluxo normal (não excepcional). Uma vez que este é um programa estático, o site de chamada é simplesmente um local de memória, empurrado na pilha.
Para um programa de linguagem dinâmica (Ruby, Python, etc), o código que você está chamando não é trabalhado até o tempo de execução. Isto significa que alguma forma de lógica é necessária para gerenciar o processo de fazer a chamada de função correta e, em seguida, limpar após a chamada (Se necessário). Se o programa de linguagem dinâmica estiver em .NET 4 isto é feito usando DLR (dynamic language runtime) objectos do tipo System.Execucao.CompilerServices.Local de chamada. Assim a chamada retornará a um método dentro do objeto do CallSite e, em seguida, para a localização do original chamar.
Então a resposta é que depende de como você faz a chamada e, portanto, que plataforma você está usando.