试图通过这个编程ruby站点来获取ruby,我被这个语法困住了
class SongList
def initialize
@songs = Array.new
end
def append(aSong)
@songs.push(aSong)
self
end
def deleteFirst
@songs.shift
end
def deleteLast
@songs.pop
end
end当我去加一首歌..。
list = SongList.new
list.append(Song.new('title1', 'artist1', 1))我收到以下错误消息:
NameError: uninitialized constant Song ...Programming Ruby 我看到我需要变量Song,但是我不知道在SongList类中应该在哪里执行它.
发布于 2014-06-13 20:02:51
您可以使用Ruby Struct类:
Struct是一种方便的方法,可以使用访问器方法将许多属性捆绑在一起,而不必编写显式类。
class SongList
def initialize
@songs = [] # use [] instead of Array.new
end
def append(aSong)
@songs.push(aSong)
self
end
def delete_first
@songs.shift
end
def delete_last
@songs.pop
end
end
Song = Struct.new(:song_name, :singer, :var)
list = SongList.new
list.append(Song.new('title1', 'artist1', 1))
# => #<SongList:0x9763870
# @songs=[#<struct Song song_name="title1", singer="artist1", var=1>]> var=1>]>https://stackoverflow.com/questions/24212959
复制相似问题