首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Ruby --“未定义的方法”

Ruby --“未定义的方法”
EN

Stack Overflow用户
提问于 2014-06-16 17:03:33
回答 1查看 153关注 0票数 1
代码语言:javascript
运行
复制
class Book
def isBook()
    return true
end

def initialize(isbn, userID)
    @isbn = isbn
    @userID = userID
end

def ==(var)
    if(var.isbn == @isbn && var.userID == @userID)
        return true
    end

    return false
end

def print()
    "ISBN: %{@isbn}\nWypozyczono przez: %{@userID}"
end
end 

class BookList
def initialize()
    @arr = Array.new()
end

def add(book)
    if(book.isBook())
        @arr.push(book)
    end
end

def at(var)
    @arr[var].print()
end
end 

booklist = BookList.new()
print booklist
booklist.add(Book.new(1231231231231, "d_zeglen"))

print BookList.at(0)

我不知道我在哪里犯的错。当我尝试运行这个程序时,ruby会打印到控制台中:

代码语言:javascript
运行
复制
undefined method 'at' for BookList:Class (No method error) 

有人知道这是怎么回事吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-06-16 17:05:13

#at是类BookList实例的实例方法,而不是类方法。因此,下面的工作

代码语言:javascript
运行
复制
print booklist.at(0) 

这是密码:-

代码语言:javascript
运行
复制
class Book
  def isBook()
    return true
  end

  def initialize(isbn, userID)
    @isbn = isbn
    @userID = userID
  end

  def ==(var)
    if(var.isbn == @isbn && var.userID == @userID)
      return true
    end

    return false
  end

  def print()
    "ISBN: %{@isbn}\nWypozyczono przez: %{@userID}"
  end
end 

class BookList
  def initialize()
    @arr = Array.new()
  end

  def add(book)
    if(book.isBook())
      @arr.push(book)
    end
  end

  def at(var)
    @arr[var].print()
  end
end 

booklist = BookList.new()
print booklist
booklist.add(Book.new(1231231231231, "d_zeglen"))

print booklist.at(0)
# >> #<BookList:0xa013de4>ISBN: %{@isbn}
# >> Wypozyczono przez: %{@userID}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24248706

复制
相关文章

相似问题

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