Раздел «Язык Ruby».RubySchoolSourceL04:
<<Программирование на Ruby

Занятие 4: Контейнер MyRange и блоки

Следующее занятие
Предыдущее занятие

Домашнее задание

Материалы занятия

Еще раз про ООП

ary = [1, 2.3, "abc", [1, 2, 3], {1 => 3}, 1..10]

ary.each do |e|
  puts "#{e.inspect} is a #{e.class}"
end

puts 1.is_a?(Fixnum)
puts 1.is_a?(Integer)
puts 1.is_a?(Numberic)

puts 1.class == Integer

puts Fixnum.superclass
puts Fixnum.superclass.superclass
puts Fixnum.superclass.superclass.superclass

Блоки

def foo(&block)
  p block
  if block
    p block.class
    p block.arity
    # p block.methods
    # puts
    # p block.methods - Object.instance_methods
  end
end

puts "One"
foo do |i|
  i + 1
end

puts "Two"
foo do |a,b|
  a + b
end

puts "Three"
foo

l = lambda { puts "Hi"}

l.call
puts l.arity

l.class(1,2,3)

l = lambda { puts "Hi"}

l.call
puts l.arity

l.class(1,2,3)

Разработка своего контейнера

См. MyRange

Следующее занятие
Предыдущее занятие