Estoy acostumbrado a tipear dinámicamente, verificando el tipo de información de la estructura orientada a objetos/no objetos en tiempo de ejecución y lanzando algún tipo de error de tipo, es decir, si grazna como un pato es un pato. ¿Hay algún tipo diferente de tipado dinámico (por favor, entre en detalles).Mecanografía dinámica sin tipar pato?
Respuesta
No, el tipado dinámico es cuando los valores tienen tipo pero las variables no, por lo que la mayoría de las comprobaciones de tipo se realizan en tiempo de ejecución. Entonces, básicamente, si el valor camina o grazna como un pato, es un pato, de lo contrario se produce un error. Duck typing realmente solo describe una característica del tipado dinámico que asegura que será seguro (es decir, un método solo se ejecutará si la variable foo
'tiene el atributo correcto o puede ejecutar ese método).
Sí, por supuesto. Duck-typing es un modismo que dice que el tipo de valor en este momento se basa en los campos y métodos que tiene ahora. La tipificación dinámica solo dice que los tipos están asociados con valores de tiempo de ejecución, no con variables y parámetros estáticos. Hay una diferencia entre los dos, y puedes usar el último sin el primero.
Por ejemplo, si programó en PHP y se limitó a los tipos básicos sin usar OO, entonces estaría usando la escritura dinámica sin usar pato-tipado.
¿Podría explicar su ejemplo? ¿Estás diciendo simplemente que la verificación de tipos en el tiempo de ejecución es la tipada dinámica, mientras que la comprobación basada en la prueba de la existencia de métodos y propiedades de los objetos se denomina tipado de pato? es decir, ¿diría que la diferencia entre los dos tiene que ver con * objects *? En ambos casos (dinámica no de pato y tipado de pato), parece que la compatibilidad de ciertas operaciones (llamada de método, adición, etc.) con los valores de entrada se verifica en tiempo de ejecución; ¿está bien? la única diferencia es que el tipado de pato tiene que ver con objetos, y ese tipado dinámico es más general, ¿no? – EOL
@EOL: Sí, la verificación de tipos es un tipado dinámico (que realmente debería llamarse "comprobación dinámica", verificar la existencia de propiedades es pato escribir. La cuestión de "objetos de interés" es un poco vaga para decir que es correcta, pero creo que Ambos están en la misma página. –
¡Gracias! Ahora veo mejor la distinción entre los dos. – EOL
- 1. Mecanografía dinámica en C#
- 2. Mecanografía implícita y TDD
- 3. Mecanografía estática/fuerte y refactorización
- 4. Etimología "pato escribiendo"?
- 5. ¿Cuál es la relación entre la plantilla de C++ y la tipificación de pato?
- 6. ¿En qué se diferencia la tipificación de pato del tipo y las interfaces "variante" anterior?
- 7. Mecanografía implícita de matrices que implementan interfaces
- 8. Mecanografía implícita; ¿por qué solo variables locales?
- 9. Scala patrón de tipificación de pato juego
- 10. Barra lateral dinámica de Wordpress sin título
- 11. Mecanografía explícita en Groovy: ¿a veces o nunca?
- 12. tipificación de pato y el concepto
- 13. ¿Cómo documentar un tipo de pato?
- 14. ¿Hay algún lenguaje estático de tipo pato?
- 15. Observación del patrón Paul Irish 'pato perforación'
- 16. Mecanografía con declaraciones printf bajo Mac OSX y Linux
- 17. Mecanografía estructurada en Scala no funciona con Double?
- 18. Aplicada de pato a escribir en C plano
- 19. Lista de reproducción dinámica y sin interrupciones de videos
- 20. Idioma Pimpl sin utilizar la asignación de memoria dinámica
- 21. Cómo hacer tabla dinámica sin conocimiento de las columnas
- 22. ¿Manera elegante de escribir cadenas de pato, símbolos y matrices?
- 23. ¿Podría mejorar este método con el tipado de pato?
- 24. Simulación de la tipificación de pato en Java
- 25. métodos mínimos de pedidos con Typing pato en Python 3.1
- 26. Si escribe pato en Python, ¿debería probar isinstance?
- 27. ¿Cómo se verifican las interfaces de pato en python?
- 28. Tipos de pato de documento con varios métodos en YARD
- 29. ¿Los objetos dinámicos de C# 4.0 tienen cierta facilidad para tipar patos?
- 30. Programación dinámica
Eso es incorrecto. No comprueba el tipo, solo que el tipo puede hacer un operador X o tiene algún atributo Y. Si llama, por ejemplo, aString() en una variable, si es un objeto e implementa un método toString() , entonces se llamará, de lo contrario, obtendrá un error. Pero muchos tipos podrían cumplir este requisito. – siride
Buen punto, voy a hacer una edición –