Esta pergunta foi feita aqui , mas recebeu respostas ruins e não esclareceu o problema. Acredito que justifique perguntar novamente.
Entendo que você pode digitar duck com linguagens dinamicamente ou com estaticamente (mas exemplos para isso são raros, como os modelos do C ++).
No entanto, não tenho certeza se existe algo como um idioma digitado dinamicamente sem a digitação do pato.
A digitação de pato significa que o tipo de um objeto é baseado nas operações e atributos que ele possui em um determinado momento. Existe uma maneira de digitar dinamicamente sem, inevitavelmente, oferecer suporte à digitação com patos?
Vamos dar uma olhada neste código Python para o exemplo:
def func(some_object)
some_object.doSomething()
something = Toaster()
func(something)
Nas linguagens digitadas dinamicamente, o tipo de um objeto é conhecido apenas em tempo de execução. Portanto, quando você tenta fazer uma operação (por exemplo some_object.doSomething()
), o tempo de execução tem apenas uma opção - verificar se o tipo de some_object
suporte doSomething()
é ou não , e é exatamente o que é digitação de pato.
Então, é possível ter um idioma digitado dinamicamente sem digitar o pato? Por favor explique.
1 + "1"
. No caso do Python, a disciplina de verificação está praticamente ausente e cabe à implementação do código do usuário verificar os tipos se o usuário (ao contrário do tempo de execução do Python) achar útil. Observe também que a tipagem do pato versus a não-pato é semelhante à tipagem estrutural e estrutural (consulte a Wikipedia).