FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
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); var filename : string; begin for filename in Tdirectory.getfiles(i_directorio, i_tipo) do Tfile.Delete(filename); end; 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. |
#2
|
||||
|
||||
"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.
__________________
El malabarista. Última edición por mamcx fecha: 02-03-2017 a las 20:23:40. |
#3
|
||||
|
||||
Mario Montoya merece un punto más de reputación.
|
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Información sobre Uses LCL | argeelo | Lazarus, FreePascal, Kylix, etc. | 20 | 07-09-2015 16:35:59 |
Utilización de Generics.Collections | Jere_84 | Varios | 5 | 26-04-2013 19:01:39 |
Error con Generics.Colletion y Help | Paulao | Varios | 0 | 07-03-2011 14:38:20 |
informacion sobre la OOP? | FGarcia | OOP | 3 | 26-08-2010 02:18:10 |
Experiencias con Metodos Anónimos y Generics | gatosoft | Debates | 4 | 04-06-2010 17:33:08 |
|