Анонимные функции


# Анонимные функции называются Лямбда

prc = lambda { |name| puts "Hello" + name }
prc.call "Robot"

count = Proc.new { [1,2,3].each do |i| print i end; puts }
count.call

prc = proc { puts "Hello" }
prc.call

# Процедурные объекты с блоком кода в качестве параметра

def profile descriptionOfBlock, &block  #  Описание блока и сам блок
  startTime = Time.now
  block.call
  duration = Time.now - startTime
  puts descriptionOfBlock+':  '+duration.to_s+' сек.'
end

profile '25000 удваиваний' do
  number = 1
  25000.times do
    number = number + number
  end
  puts number.to_s.length.to_s+' цифр'
end