En Ruby, se supone que todo es un objeto. Pero tengo un gran problema para llegar al objeto de función definida de la forma habitual, comoObtener el objeto de función ruby en sí
def f
"foo"
end
diferencia en Python, F es el resultado de la función, no la propia función. Por lo tanto, f()
, f
, ObjectSpace.f
son todos "foo"
. También f.methods
devuelve solo la lista de métodos de cadena.
¿Cómo accedo al objeto de la función en sí?
Esta es una de (muchas) cosas que me vuelven loco en ruby. No puede hacer referencia a una función por nombre sin invocarla. Tengo argumentos sobre esto con mis orkers de vacas. –
Creo que Ruby tiene su propio camino y algunos principios utilizados en otros idiomas simplemente no se aplican (en este caso, probablemente definiría la función con Proc, o usaría el bloque de código), pero aún me pregunto si hay una respuesta positiva a mi pregunta – mykhal
@Jonathan: Puede referirse al nombre de un método sin llamarlo. El nombre de un método es un símbolo. Entonces el nombre de este método es ': f'. Ruby es bastante famoso por sus capacidades de metaprogramación, y los nombres de los métodos se usan todo el tiempo allí. – Chuck