- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
Ruby programmers are very particular about how their for-loops are written and will declare you a bad programmer for simply using this one construct wrong.
They went so far as to break the for-each version of looping so that there are problems with using it, forcing you to conform to their culture. Heed my warning that
you should always use .each and never for-each for fear of being forever branded bad and shunned. Yes, it is as ridiculous as it sounds.
# запишут в пидарасы
for i in (1..10)
puts i
end
# зауважают
(1..10).each do |i|
puts i
end
но первый вариант тут явно ничуть не лучше второго
Просто блок создает область видимости, а фор нет
Создатель руби, он реально крейзи
* можно просто выйти из блока, вернув значение (next *args, неявный return в конце)
* можно выйти из метода, вызвавшего блок (break *args)
* можно выйти из метода, объявившего блок, или отхватить LocalJumpError, если такое уже невозможно (явный return *args)
Это вам не какое-нибудь goto в середину цикла :3
Что характерно, в лямбде тоже можно next и break. А что они делают - попробуйте догадаться без гугла и ideone :3
Создать объект proc из блока (и наоборот) можно посредством "&".
Лямбда это тоже proc, но в отличие от Proc.new + block она не проверяет аргументы.
Забористая трава на солнечном склоне горы Фудзиямы
Какая потеря (((
>>
pecular же