我很简单,如何使用类实例返回数组?我正在尝试返回数组,但是这个变量返回一个空数组。
例如:
class Library
def initialize
@@books = []
end
def all
@@books
end
def add_book(arg = {})
@book = Book.new(arg)
@@books << @book
end
end
class Book
attr_accessor :name, :year, :author, :content
def initialize( arg = {})
@name = arg[:name]
@year = arg[:year]
@author = arg[:author]
@content = arg[:content]
end
end
@@ books是一个Library类变量。我使用方法add_book将书籍放入@books,但我怎样才能返回这些实例的数组?抱歉英文不好。
提前致谢!
答案 0 :(得分:1)
当您调用方法new
来创建新对象时,ruby会运行initialize
方法。由于initialize
方法将@@books
设置为空数组,因此Library.new.all
将返回一个空数组。
答案 1 :(得分:0)
类变量由类的所有实例共享,因此在初始化新Library
时重置它是没有意义的,因为您将所有其他Library
中存储的书归零。 1}}实例。根据您的使用情况,您看起来想要一个普通的实例变量:
class Library
def initialize
@books = []
end
# you could replace this method with a `attr_reader :books`
def all
@books
end
# consider changing the method signature to accept a Book instance
def add_book(arg = {})
@books << Book.new(arg)
end
end