Menu
Coddy logo textTech

Что такое блок?

Часть раздела Логика и управление потоком путешествия по Ruby на Coddy — урок 15 из 56.

Вы уже писали блоки. Каждый раз, когда вы писали each do |x| ... end, часть между do и end была блоком: фрагментом кода, передаваемым в метод.

[1, 2, 3].each do |n|
  puts n * 2
end

Здесь each — это метод массива, а do |n| ... end — это блок. each выполняет блок один раз для каждого элемента, передавая его как n.

Блоки не являются отдельными объектами, которые вы храните в переменных, они напрямую привязаны к вызову метода. Метод либо получает блок, либо нет, и большинство методов итерации (each, map, select, times) спроектированы так, чтобы принимать его.

3.times do |i|
  puts "hi #{i}"
end

Вызов метода без блока меняет то, что он делает. [1,2,3].map без блока возвращает перечислитель вместо преобразованного массива, поэтому блок является частью того, что означает метод.

challenge icon

Задание

Новичок

Считайте целое число n из входных данных. Используйте метод times с блоком, чтобы вывести сообщение Iteration <i> для каждого значения i от 0 до n - 1.

Для входного значения 3 вывод будет следующим:

Iteration 0
Iteration 1
Iteration 2

Шпаргалка

Блок — это фрагмент кода, передаваемый методу между do |param| ... end:

[1, 2, 3].each do |n|
  puts n * 2
end

Используйте times, чтобы повторить блок n раз, при этом i меняется от 0 до n - 1:

3.times do |i|
  puts "hi #{i}"
end

Попробуйте сами

n = gets.to_i

# TODO: используйте n.times с блоком для вывода каждой итерации
quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Логика и управление потоком