estoy aprendiendo Ruby y RoR en este momento, y me encontré con esto:¿Cuál es el sentido de "para x en y" en Ruby?
<% for post in @posts %>
en el Rails guide. Yo había entendido que la forma idiomática de hacerlo en Ruby es con:
<% @posts.each do |post| %>
Si hay una diferencia, entonces ¿qué es? Y si no hay una diferencia, ¿no sería mejor para la gente de Rails prescindir de las expresiones idiomáticas propias de Ruby (en lugar de esto, que a mí me parece más pitónico)?
Editar: me acaba de encontrar dos explicaciones contradictorias de este Tutorials Point: dice que son los mismos, excepto "un bucle no crea un nuevo ámbito para las variables locales", mientras que CS.Auckland.ac.NZ dice for
es sólo sintáctica azúcar para el equivalente .each
.
Edit2: Elfor ... in
en cuestión era para el index.html.erb
generado en app/views/posts
por script/generate scaffold
. Hice una comprobación rápida y ahora genera la sintaxis .each
. Supongo que esa parte de la guía se escribió en una etapa anterior del desarrollo de rieles cuando el andamio generó for ... in
.
Edit3: ahora puedo confirmar que for x in y
se utilizó en Rails 2.2.2, 2.3.8, sino por el uso que se y.each do |x|
. Solo para que sepas.
¡Gracias! Exactamente lo que estaba buscando. Esto me lleva de regreso a mi punto original, ¿por qué el equipo Rails (o al menos quien escribió la guía Getting Started) iba con la sintaxis 'for ... in'? – Skilldrick
Hay mucha gente que aprende rails sin haber aprendido ruby primero. Supongo que la guía está escrita en un estilo que pretende ser familiar para las personas que provienen de otros idiomas. – sepp2k
Una diferencia relacionada entre los dos que no es obvia solo de ese ejemplo: 'a = []; para x en [1,2,3,4]; un << proc {x} final; map (&: call) 'da' [4,4,4,4] 'mientras que el equivalente con' each' daría '[1,2,3,4]' porque 'each' introduce un nuevo enlace' x' con cada iteración. – Chuck