Como usted dice, * puede * crear un Proc, que es un objeto que representa una pieza de código ejecutable (es decir, una función de primera clase). Cuando un método recibe un bloque, puede declarar un nombre para él en su firma, así:
def do_something (arg1, arg2 y block)
# hacer cosas
block.call
# hacer más cosas
fin
Cuando Ruby invoca este método, el bloque (si se da uno) se convierte en un objeto Proc y se asigna a la variable `block`.
- ¿Hay algún conocimiento básico sobre cómo crear un marco JS como Angular & React?
- ¿Dónde debo poner este código js en map box studio?
- ¿Cómo puedo crear enlaces para mi sitio web usando YouTube?
- ¿Quiénes son los mejores diseñadores web en Kerala?
- ¿Cómo haces que un sitio web funcione rápido?
Sospecho por su pregunta que ya comprende todo esto.
Parece que está haciendo la distinción entre un bloque , que es una referencia a un punto en el código y el cierre de su enlace, y un Proc , que es un objeto Ruby completo. La única diferencia significativa entre estos dos conceptos es que el segundo es un valor de Ruby (un objeto), mientras que el primero es solo una cosa en el nivel C subyacente. Un Proc es simplemente un bloque que se ha convertido en un valor y, por lo tanto, es asignable. Por lo tanto, no se puede asignar un bloque a una variable porque si pudiera, eso sería lo que llamamos un Proc.
Mi consejo sería no preocuparse por la distinción. Se supone que no le importa al desarrollador de Ruby, solo al implementador del lenguaje.