У меня никогда не было проблемы с выполнением его как это:
<form>
<div>
<input type="checkbox" id="cb" /> <label for="cb">Label text</label>
</div>
</form>
Все больше людей используют нотацию @ cars.each
, потому что она обобщается на другие методы (например, #inject
, #each_with_index
, #map
и т. Д., А также обратные вызовы без итератора).
for / in в основном просто синтаксический сахар для #each
. Основное различие в том, как они работают, заключается в области видимости переменных:
irb> @cars = %w{ ford chevy honda toyota }
#=> ["ford", "chevy", "honda", "toyota"]
irb> @cars.each { |car| puts car }
ford
chevy
honda
toyota
#=> ["ford", "chevy", "honda", "toyota"]
irb> car
NameError: undefined local variable or method `car` for #<Object:0x399770 @cars=["ford", "chevy", "honda", "toyota"]>
from (irb):3
from /usr/local/bin/irb:12:in `<main>`
irb> for car in @cars
puts car.reverse
end
drof
yvehc
adnoh
atoyot
#=> ["ford", "chevy", "honda", "toyota"]
irb> car
#=> "toyota"
for / in оставляет переменную итератора в области видимости впоследствии, а #each
- нет.
Лично я никогда не использую ruby для / в синтаксисе.
Я думаю, что это просто синтаксический сахар. Он функционально эквивалентен, и мне не известно о каких-либо различиях в реализации интерпретатора.
Обратите внимание - вы можете потерять «do» на втором.