Para tener funciones dentro de módulos, en Ruby, hace falta declarar las
funciones como NombreModulo.nombre_funcion
. Kind of like static/class methods.
Gross.
No he visto cómo cargar/poner en el namespace actual sólo ciertas funciones de un módulo.
Por otro lado, los import kind-of no ponen el directorio actual en el PATH del
intérprete. require 'foo'
no sirve, pero require './foo'
sí.
Los bloques son formas prácticas de crear funciones anónimas, y pasar esas funciones a otras funciones. Diferencias respecto a Python:
- Estas funciones anónimas pueden tener múltiples sentencias, a diferencia de
lambda
en Python. - Supongo que son el machete necesario para referirse a una función, en vez de
llamarla. Como en Ruby
hacer_algo
llama a la función pasándole 0 argumentos, no hay forma sencilla de referirse a ella. - Los bloques permiten crear clausuras de verdad, en vez de tener una cosa de 3 pesos de sólo lectura.