首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NameError:未初始化常量...Programming Ruby

NameError:未初始化常量...Programming Ruby
EN

Stack Overflow用户
提问于 2014-06-13 19:55:13
回答 1查看 819关注 0票数 1

试图通过这个编程ruby站点来获取ruby,我被这个语法困住了

代码语言:javascript
复制
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

当我去加一首歌..。

代码语言:javascript
复制
list = SongList.new
list.append(Song.new('title1', 'artist1', 1))

我收到以下错误消息:

代码语言:javascript
复制
NameError: uninitialized constant Song ...Programming Ruby 

我看到我需要变量Song,但是我不知道在SongList类中应该在哪里执行它.

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-06-13 20:02:51

您可以使用Ruby Struct类:

Struct是一种方便的方法,可以使用访问器方法将许多属性捆绑在一起,而不必编写显式类。

代码语言:javascript
复制
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>]>
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24212959

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档