Thursday, 28 June 2012

Virtual Attributes In Ruby

class Song 
  def initialize(name, artist, duration)
    @name = name 
    @artist = artist 
    @duration = duration 
  end 


  def to_s 
    "song: #{@name} -- #{@artist} (#{@duration})" 
  end 


  def durationInMinutes 
    @duration / 60.0 
  end 


  def durationInMinutes=(value)
    @duration = (value * 60).to_i 
  end 
end 


song = Song.new "aaa", "bbb", 240 
p song.instance_variables >> [:@name, :@artist, :@duration] 
p song.to_s               >> "song: aaa -- bbb (240)" 
song.durationInMinutes = 10 
p song.instance_variables >> [:@name, :@artist, :@duration] 
p song.to_s               >> "song: aaa -- bbb (600)"

No comments :

Post a Comment