![]() |
información sobre generics
Hola a todos .... acabo de ver el siguiente código delphi que permite borrar dentro de un directorio todos los ficheros que coincidan con un tipo:
Código:
Procedure Borrar_ficheros(i_directorio, i_tipo : string);La codificación me resulta rara .... al menos para mi ( sintaxis del for ...). Esto es ¿ generics ? . Donde puedo encontrar información sobre esto. ( a ser posible en español). Siempre me pasa que salen un montón de temas nuevos pero .... se desaprovechan / no se utilizan / se pierden por falta de news / documentación ... ejemplos.. ¿¿¿¿.... ???? Gracias. |
"Generics" no es lo que muestra el código. Eso es otra cosa:
Dependiendo de, es "syntax sugar" que el compilador RE-ESCRIBE en un ciclo for "normal" o una llamada a un generador o iterador; o una mezcla de los 3. Un compilador normalmente convierte el FOR en un WHILE (eso se llama "desugar" = eliminar el "sugar" o reescribir) maso asi: (Con ejemplo en rust, que fue el primero que encontre: https://lliwynd.blogspot.com.co/2016...for-loops.html) Con "sugar" Código PHP:
Código PHP:
Si miras a fondo, te darás cuenta que los WHILE y los FOR; NO EXISTEN, ya que no existen en el assembler. Todo al final se "desugar" en JUMPS (GOTOS!). --- Un "Generic" es una forma de generalizar sobre el tipo, y la respuesta a la pregunta: Cómo evitar duplicar codigo que solo se diferencia por el tipo, pero no por su semántica/estructura/operación?:
Como ves, se pueden hacer una cantidad "infinita" de funciones "sum" por tantos tipos como sea posible, pero repetir ese codigo se vuelve infrahumano, así que un "GENERIC" permite generalizar el código a:
Y el compilador DESUGAR:
Osea, es como una plantilla. Esto tiene correspondencia con los lenguajes dinámicos, donde se podría argumentar que TODO es "generic" Como en python: Código PHP:
Generic es entonces una forma de lograr un poco de dinamismo dentro de los limites de los lenguajes de tipos estáticos. |
Mario Montoya merece un punto más de reputación. :) ^\||/
|
| La franja horaria es GMT +2. Ahora son las 12:42:59. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi