Раздел «Язык Ruby».RubyCourseLecture05:
<<Метапрограммирование на Ruby

Следующая лекция
Предыдущая лекция

Лекция 5. Контрольная работа. Определение класса MyRange. Конструкция begin-rescue

Контрольная работа

Задача 1. Что выведет следующий код?
ary = ['a', 'b', 'c']
ary.each do |w|
  w += 'x'
end
puts ary 

Задача 2. Что выведет следующий код?
a = "abc"
b = a
b << 'x'
puts a
puts b

Задача 3. Напишите метод ip_to_number, который из строки c IP адресом получает целое число, которое получится, если 4 байта IP адреса интерпретировать как двоичную запись числа.

Задача 4. Напишите метод Integer.from_digits из массива десятичных цифр (объекты класса FixNum) вычисляет само число. Используйте метод inject (нельзя писать digits.join.to_i)
def Integer.from_digits(digits)
  ...
end

Определение своего класса MyRange

см. MyRange

Конструкция begin-rescue

begin
  Ух!  мы тут 
  такого сейчас понаделаем !
rescue MySimpleError => e
  ошибка вроде простая, 
  сейчас  мы её пофиксим и будем cчастливы
  retry if пофиксилась
rescue MyUrecoverableError => e
  ууупс!
  puts "У нас серьезные неприятности " + e.message + "\n" + e.backtrace
else 
  итак, ошибок нет, и кое-что еще осталось 
  сделать
ensure
  а вот кое-что нужно сделать в любом случае (есть исключения или нет),
  например, закрыть все открытые соединения
end

Следующая лекция
Предыдущая лекция