Descripción: El iterador interno es un patrón de diseño que permite a una colección controlar su propio proceso de iteración. A diferencia de un iterador externo, donde el cliente tiene el control sobre el ciclo de iteración, en el iterador interno, la colección se encarga de la lógica de iteración. Esto significa que el cliente simplemente proporciona una función o un bloque de código que se ejecutará para cada elemento de la colección, mientras que la colección se encarga de recorrer sus elementos. Este enfoque promueve una mayor encapsulación y reduce la complejidad del código del cliente, ya que no necesita preocuparse por los detalles de cómo se realiza la iteración. Además, el iterador interno puede optimizar el proceso de iteración, ya que tiene acceso directo a la estructura interna de la colección. Este patrón es común en lenguajes de programación que soportan funciones de orden superior, como JavaScript, Python y Ruby, donde se pueden utilizar funciones como `map`, `filter` y `forEach` para operar sobre colecciones de manera más declarativa y concisa.