¿Qué significa bloquear en Ruby? Se parece a Smalltalk, pero no puedes enviarle mensajes.Bloque en Ruby en comparación con Smalltalk
Por ejemplo, en Smalltalk:
[:x | x + 3] value: 3
rendimientos 6. Pero en rubí:
{|x| x + 3}.call 3
originen SyntaxError.
Bueno, puede pasar mensajes a lambda en rubí, sin embargo:
irb(main):025:0> ->(x){x+3}.call 3
=> 6
Así que en Ruby, el bloque no es un bloque, pero Lambda es un bloque? ¿Es esto cierto? Quiero decir, ¿hay alguna diferencia entre ruby lambda y smalltalk block? Si esto es cierto, entonces, ¿qué es un bloque de rubíes?
Actualización:
Desde el comentario y responder a continuación, junto con algunas google, supongo que más entendimiento del bloque Ruby. En Ruby, generalmente una pieza de código evalúa un valor, y cada valor es un objeto. Pero, bloque no evalúa un valor. Entonces no es un objeto En cambio, puede actuar como parte de un objeto. Por ejemplo, en {| x | x + 3} puede actuar como una parte del objeto proc {| x | x + 3}.
Pero me confundió. En smalltalk, casi todas las expresiones se pueden dividir en objetos (el enlace a las variables son excepciones). Parece que en Ruby, hay más excepciones.
Creo que te estás perdiendo un rendimiento. Aunque no soy muy experto en bloques ... – Earlz
Gracias por señalar el rendimiento. Encontré esta pregunta relacionada: http://stackoverflow.com/questions/764134/rubys-yield-feature-in-relation-to-computer-science – weakish