oop/special_methods.rb

tests/_examples/oop/special_methods.rb in the metorex repository.

class Book
  def initialize(title)
    @title = title
  end

  def to_s
    "Book: " + @title
  end

  def inspect
    "Book(title=" + @title + ")"
  end
end

class Magazine
  def initialize(name)
    @name = name
  end

  def inspect
    "Magazine: " + @name
  end
end

class SimpleIterator
  def initialize
    @value = 0
  end

  def each
    self
  end

  def next
    "next_value"
  end
end

book = Book.new("Ruby Guide")
puts book

magazine = Magazine.new("Tech Monthly")
p magazine

it = SimpleIterator.new
iterator = it.each
puts iterator.next

Output:

Book: Ruby Guide
Magazine: Tech Monthly
next_value