.length返回值(NoMethodError)ruby版本2.7.0p0

.length返回值(NoMethodError)ruby版本2.7.0p0,ruby,Ruby,您好,我正在尝试运行这段代码,但是我在我的代码行上收到了no-method错误。我遇到的代码行长度是某种ruby版本的问题,但是我如何解决这个问题 class BookCase def initialize(attributes = {}) @capacity = attributes[:capacity] @books = attributes[:books] || [] end def full? space = @books

您好,我正在尝试运行这段代码,但是我在我的代码行上收到了no-method错误。我遇到的代码行长度是某种ruby版本的问题,但是我如何解决这个问题

class BookCase

    def initialize(attributes = {})
      @capacity = attributes[:capacity] 
      @books = attributes[:books] || []
    end

    def full?
      space = @books.length
      puts space
    end
end

bookcase1 = BookCase.new(capacity: 4, books: 6)
puts "is it full?"
bookcase1.full?

输出:
6:Integer(NoMethodError)的未定义方法
length`

我不太明白您想做什么,但问题与Ruby版本无关。实例变量
books
的值是
整数
数字6,在
Integer
类中没有
length
方法或属性。

再看一看错误-对于
Integer
没有
length
方法。您可以将
@books
变量更改为
@books=attributes[:books]| 0
。这样您就不需要在
full?
方法中调用
.length