Разница с и без:
# in some other library
def before_stuff
...before code...
end
def after_stuff
..after code...
end
# in your code
def do_everything
before_stuff()
my_custom_stuff()
after_stuff()
end
| # in some other library
def around_stuff
...before code...
yield
..after code...
end
# in your code
def do_everything
around_stuff do
my_custom_stuff()
end
end
|
Итераторы - это один из способов применения yield. На место оператора yield ставится блок кода, которые решает что делать с тем или иным элемемнтом итерации, или вцелом с самим процессом итерации:
class RandomSequence
def initialize(limit,num)
@limit,@num = limit,num
end
def each
@num.times { yield (rand * @limit).floor }
end
end
i = -1
RandomSequence.new(10,4).each do |num|
i = num if i < num
end
Комментариев нет:
Отправить комментарий