class Song
include Comparable ##
include
和extend
有什么不同? ##include
负责将
module
插入到类(模块)中,这样就能以函数的形式来调用方法;而
extend
负责将
module
插入到对象(实例)中,这样就添加了特殊方法。
@@plays = 0 ##类变量,必须初始化
attr_reader :name, :artist, :duration ##分别为@name,@artist,@duration设置可读的属性
attr_writer :duration ##对@duration设置可写的属性
def initialize(name, artist, duration)
@name = name
@artist = artist
@duration = duration
@plays = 0 ##对象变量
end
def to_s
"Song: #@name--#@artist (#@duration)"
end
def name ##函数式的公开所有变量
@name
end
def artist
@artist
end
def duration
@duration
end