Report abuse

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
class Life
  attr_reader :birth, :death
  
  def initialize age = 0
    @birth = Time.now - age
  end
  
  def age
    if alive?
      Time.now - @birth
    else
      @death - @birth
    end
  end
  
  def alive?
    @death.nil? # !> instance variable @death not initialized
  end
  
  def suicide
    puts "AAArrgh..!"
    
    # What to do, what to do …
    
    # self.end  # Can't call private method on explicit receiver. EVER!
    # end       # teehee keyword =^_^=
    
    self.send(:end)
  end
  
private
  
  def end
    @death = Time.now
  end
end

life = Life.new

sleep 1

life.alive? # => true
life.age # => 1.017878

life.suicide
# >> AAArrgh..!

life.alive? # => false
life.age # => 1.018007
sleep 1
life.age # => 1.018007