Я сейчас изучаю Ruby и RoR, и я столкнулся с этим:
<% for post in @posts %>
в направляющей Rails . Я понял, что идиоматический способ сделать это в Ruby - это:
<% @posts.each do |post| %>
Если есть разница, тогда что это? И если нет никакой разницы, то не лучше ли было бы, чтобы люди из Rails выдвигали правильные идиомы Ruby (а не это, что мне кажется более питоническим)?
Редактировать: Я только что нашел два противоречивых объяснения этого: Учебное пособие говорит, что они одинаковы, за исключением того, что цикл 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|
. Просто чтобы ты знал.