ruby类3

来源:互联网 发布:mac 卸载工行网银助手 编辑:程序博客网 时间:2024/06/12 01:00

class Song  @@plays = 0  attr_reader :name, :artist, :duration  attr_writer :duration  def initialize(name, artist, duration)    @name     = name    @artist   = artist    @duration = duration    @plays    = 0  end    def durationInMinutes    @duration/60.0   # force floating point  end  def durationInMinutes=(value)    @duration = (value*60).to_i  end  def play    @plays += 1    @@plays += 1    "This  song: #@plays plays. Total #@@plays plays."  endend

irb(main):023:0> aSong = Song.new("Bicylops", "Fleck", 260)=> #<Song:0x6603eec @duration=260, @artist="Fleck", @name="Bicylops", @plays=0>irb(main):024:0> aSong.inspect=> "#<Song:0x6603eec @duration=260, @artist=\"Fleck\", @name=\"Bicylops\", @plays=0>"irb(main):025:0> aSong.to_s=> "#<Song:0x6603eec>"irb(main):026:0> s1 = Song.new("Song1", "Artist1", 234) => #<Song:0x64e2004 @duration=234, @artist="Artist1", @name="Song1", @plays=0>irb(main):027:0> s2 = Song.new("Song2", "Artist2", 345)=> #<Song:0x64de404 @duration=345, @artist="Artist2", @name="Song2", @plays=0>irb(main):028:0> s1.play=> "This  song: 1 plays. Total 1 plays."irb(main):029:0> s2.play=> "This  song: 1 plays. Total 2 plays."irb(main):030:0> s1.play=> "This  song: 2 plays. Total 3 plays."irb(main):031:0> s1.play=> "This  song: 3 plays. Total 4 plays."irb(main):032:0> 

class KaraokeSong < Song  def initialize(name, artist, duration, lyrics)    super(name, artist, duration)    @lyrics = lyrics  endend


irb(main):038:0> aSong = KaraokeSong.new("My Way", "Sinatra", 225, "And now, the...")=> #<KaraokeSong:0x64d14e8 @lyrics="And now, the...", @duration=225, @artist="Sinatra", @name="My Way", @plays=0>irb(main):039:0> aSong.to_s=> "#<KaraokeSong:0x64d14e8>"irb(main):040:0> 

class SongList  MaxTime = 5*60           #  5 minutes  def SongList.isTooLong(aSong)    return aSong.duration > MaxTime  endend

irb(main):030:0> song1 = Song.new("Bicylops", "Fleck", 260)=> #<Song:0x64eea5c @artist="Fleck", @plays=0, @name="Bicylops", @duration=260>irb(main):031:0> SongList.isTooLong(song1)=> falseirb(main):032:0> song2 = Song.new("The Calling", "Santana", 468)=> #<Song:0x64e84cc @artist="Santana", @plays=0, @name="The Calling", @duration=468>irb(main):033:0> SongList.isTooLong(song2)=> trueirb(main):034:0> 

class Logger  private_class_method :new  @@logger = nil  def Logger.create    @@logger = new unless @@logger    @@logger  endend

irb(main):021:0> Logger.create=> #<Logger:0x66c9d54>irb(main):022:0> Logger.create=> #<Logger:0x66c9d54>irb(main):023:0> 

class Accounts  attr_reader :balance       # accessor method 'balance'  protected :balance         # and make it protected  def greaterBalanceThan(other)    return @balance > other.balance  end  private    def debit(account, amount)      account.balance -= amount    end    def credit(account, amount)      account.balance += amount    end  public    #...    def transferToSavings(amount)      debit(@checking, amount)      credit(@savings, amount)    end    #...end

irb(main):028:0> accounts = Accounts.new=> #<Accounts:0x6554bb8>irb(main):029:0> accounts.balanceNoMethodError: protected method `balance' called for #<Accounts:0x6554bb8>from (irb):29from :0irb(main):030:0> 


原创粉丝点击