Saltar al contenido

¿Cuál es la diferencia entre un método y un objeto proc?

Ten en cuenta que en las ciencias un problema casi siempere suele tener varias soluciones, no obstante aquí enseñaremos lo más óptimo y mejor.

Solución:

En breve:

a Method objeto está “ligado” a un objeto de modo que self apunta a ese objeto cuando usted call el método y un Proc no tiene ese comportamiento; self depende del contexto en el que se Proc fue creado/llamado.

Sin embargo:

Usted dijo en su pregunta que “los métodos no son objetos”, pero debe tener cuidado de distinguir entre “método” y Method.

Un “método” es un conjunto definido de expresiones a las que se les da un nombre y se colocan en la tabla de métodos de una clase en particular para una fácil búsqueda y ejecución posterior:

class Foo
  def my_method
    return 123
  end
end

Foo.new.my_method
# => 123

A Method objeto (o similarmente un UnboundMethod object) es un objeto Ruby real creado llamando method / instance_method / etc. y pasando el nombre de un “método” como argumento:

my_Foo = Foo.new

my_Method = my_Foo.method(:my_method)
# => #

my_Method.call
# => 123

my_UnboundMethod = Foo.instance_method(:my_method)
# => #

my_UnboundMethod.bind(my_Foo).call
# => 123

A Proc object es un conjunto de expresiones a las que no se les asigna un nombre, que puede almacenar para su posterior ejecución:

my_proc = Proc.new  123 
my_proc.call
# => 123

Puede resultarle útil leer la documentación de RDoc para UnboundMethod, Methody Proc. Las páginas de RDoc enumeran los diferentes métodos de instancia disponibles para cada tipo.

valoraciones y comentarios

Si eres capaz, tienes la libertad de dejar una reseña acerca de qué te ha gustado de esta crónica.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *