Skip to content

Latest commit

 

History

History
71 lines (53 loc) · 2.1 KB

ruby-chto-takoe-yield.md

File metadata and controls

71 lines (53 loc) · 2.1 KB

Ruby: Что такое yield?

Yield - это ключевое слово (означающее, что оно является основной частью языка), и оно используется внутри методов для вызова блока.

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

Блок - это выражение внутри фигурных скобок {} если это одно строчный блок или выражение между do..end если выражение многострочное.

yield - (переводится как собрать) буквально означает: вместо этого слова в методе нужно поставить блок кода и выполнить метод в обычном режиме. Пример использования yield

def test
  puts "You are in the method"
  yield
  puts "You are again back to the method"
  yield
end
test {puts "You are in the block"}

Получим:

You are in the method
You are in the block
You are again back to the method
You are in the block

Yield может передавать аргументы

def test
  yield 5
  puts "You are in the method test"
  yield 100
end

test {|i| puts "You are in the block #{i}"}

Вывод:

You are in the block 5
You are in the method test
You are in the block 100

Тут после yield описывается его параметр, а в блоке между двумя вертикальными чертами || - пайпами определяется переменная, которая принимает этот параметр. В результате — yield 5 передает значение 5 переменной #{i} блока test {}.

Можно передать два аргумента

def test
   yield 5, 10
   puts "You are in the method test"
   yield 100, 200
end

test {|a, b| puts "You are in the block #{a} #{b}"}

Результат

You are in the block 5 10
You are in the method test
You are in the block 100 200