Что такое блок? Что такое yield? Можно ли передавать блоки в методы? Каким образом?

Вопрос проверяет понимание блоков, механизма их передачи и использования в методах.

Короткий ответ

Блок в Ruby — это анонимный кусок кода, который передается методу. Он может быть вызван с помощью yield. Блоки можно передавать в методы через символ & в параметрах.

Длинный ответ

Блок — это кусок кода, переданный методу. Блоки записываются между {} или do...end. Их часто используют для передачи логики в методы.

Пример с yield:

def example
  yield if block_given?
end

example { puts "Hello from block!" } # => Hello from block!

 

Блоки могут принимать аргументы:

def example
  yield(42)
end

example { |num| puts num } # => 42

 

Для передачи блока в метод используют параметр с &:

def example(&block)
  block.call
end

example { puts "Hello, block with &!" } # => Hello, block with &!

 

Разница между блоками и другими объектами, такими как Proc, в том, что блок не является объектом, пока его явно не преобразуют.

Уровень

  • Рейтинг:

    2

  • Сложность:

    6

Навыки

  • Ruby

Ключевые слова

Подпишись на Ruby Developer в телеграм