我正试图从类外的一个方法中访问一个类变量。
这是我的类:
class Book
@@bookCount = 0
@@allBooks = []
def self.allBooks
@@allBooks
end
def self.bookCount
@@bookCount
end
attr_accessor :name,:author,:date,:genre,:rating
def initialize(name, author, date, genre, rating)
@name = name
@author = author
@date = date
@genre = genre
@rating = rating
@@bookCount += 1
@@allBooks << self
end
end
这是试图访问类变量@@bookCount的方法。
def seeBookShelf
if @@bookCount == 0
puts "Your bookshelf is empty."
else
puts "You have " + @bookCount + " books in your bookshelf:"
puts allBooks
end
end
当我尝试执行该方法时,我得到以下结果:
当我试图执行方法时,我会遇到这个问题:
undefined local variable or method `bookCount' for main:Object (NameError)
我怎样才能从外部访问bookCount变量?
self.class.allBooks
比直接访问更好。 - tadmansee_book_shelf
这样的写法给变量或方法命名,而不要在它们中使用大写字母。类名则是混合大小写并以首字母大写为特点,就像您在这里看到的一样。 - tadmanVARIABLE = @@book_count
,然后在类外使用Book::VARIABLE
。但不确定这是否是推荐的技术,所以请谨慎使用。 - Sagar Pandya@@bookCount
的 getter 方法,并且不允许使用方法 Module#class_variable_get,你该如何做到这一点? - Cary Swoveland