class Song
include Comparable
attr_accessor :song_name
def <=>(other)
@song_name.length <=> other.length
end
def initialize(song_name)
@song_name = song_name
@song_name_length = song_name.length
end
end
a = Song.new('Rock around the clock')
b = Song.new('Bohemian Rhapsody')
c = Song.new('Minute Waltz')
puts a < b
puts b >= c
puts c > a
puts a.between?(c,b)
这是我到目前为止所拥有的。我正在尝试编写比较歌曲名称长度的代码。
答案 0 :(得分:2)
修复你的compare原语,然后将它与另一个的like属性进行比较:
def <=>(other)
song_name.length <=> other.song_name.length
end
答案 1 :(得分:0)
你做错了两件事。您需要在class Song
之后使用分号,并且需要将@song_name
的长度与other
的长度进行比较,而不是other
本身的长度。您也不需要attr_accessor
。将其更改为attr_reader
。
class Song; include Comparable
attr_reader :song_name
def <=>(other)
@song_name.length <=> other.song_name.length
end
def initialize(song_name)
@song_name = song_name
@song_name_length = song_name.length
end
end