Phantom escribió:Bueno, solo una cosa, no había leído bien el post de arriba. Hay una parte en la que entro en desacuerdo contigo, es la siguiente:
Con respecto a Python pienso que son muy similares, de hecho escogí Ruby por la claridad de su sintaxis y las facilidades que nos brinda en cuanto a la forma de escribir código, claridad que no tiene Python.
¿Ruby es más claro que Python? Te digo una cosa, yo soy fan a los 2 lenguajes, y ya llevo años programando en los 2. La experiencia me ha demostrado todo lo contrario. Es más, sólo te voy a poner un ejemplo sencillo, si logras hacerlo más claro en Ruby que en Python, cambio mi opinión radicalmente. El ejemplo es el siguiente: muéstrame en Ruby cómo pasar una función como parámetro a otra función.
Otra cosa, conozco esa expresión del creador de Ruby (Yukihiro Matsumoto) de que Ruby sea más orientado a objeto que Python. Créeme, no lo logró.
Hola, realmente no conosco la forma en que en Python se pasa una funcion como parametro, pero te puedo mostrar varias formas de hacerlo en Ruby. En Ruby existe la opcion (ampliamente utilizada) de pasarle un bloque de codigo a una funcion, por ejemplo
, en este caso la funcion "times" recibe un bloque de codigo que imprime un string. Sin embargo esta opcion no proporciona una buena reutilizacion del codigo. Para lograrlo se puede instanciar un objeto de la clase "Proc", y dentro de la funcion ejecutar la instancia con el metodo "call", por ejemplo:
Ademas de poder definir uno mismo una funcion determinada y pasarla como argumento a la funcion en cuestion mediante la funcion "method", de la sig forma:
Código: Seleccionar todo
def my_func(a)
a*3
end
def f(arg, func = method(:my_func))
func.call(arg)
end
f(5)
. Note como en este caso el parametro que representa a la funcion, tiene un valor por defecto.