Я изучаю Ruby и RoR на данный момент, и я натолкнулся на это:
<% for post in @posts %>
в Rails guide. Я понял, что идиоматический способ сделать это в Ruby:
<% @posts.each do |post| %>
Если есть разница, то что это? И если нет никакой разницы, не лучше ли было бы, чтобы люди Rails подталкивали правильные идиомы Ruby (а не это, что выглядит мне более pythonic)?
Изменить: Я только что нашел два противоречивых объяснения этого: Tutorials Point говорит, что они одинаковы кроме "цикл for не создает новую область для локальных переменных", тогда как CS.Auckland.ac.NZ говорит, что for
- это просто синтаксический сахар для эквивалент .each
.
Edit2: Вопрос for ... in
был для index.html.erb
, сгенерированного в app/views/posts
, на script/generate scaffold
. Я сделал быструю проверку и теперь генерирует синтаксис .each
. Я предполагаю, что часть руководства была написана на более ранней стадии развития рельсов, когда эшафот сгенерировал for ... in
.
Edit3: Теперь я могу подтвердить, что for x in y
использовался в Rails 2.2.2, но в 2.3.8 он использует y.each do |x|
. Просто чтобы вы знали.