【问题标题】:Why do I cannot access hash in Ruby?为什么我无法在 Ruby 中访问哈希?
【发布时间】:2018-10-17 13:27:46
【问题描述】:

我打算将 Book1 的数据添加到散列 bl,但是当我运行代码时它会返回我

:在`booklist'中:参数数量错误(给定0,预期1)(ArgumentError)

这是我的代码。

class Book
  attr_accessor :title, :author, :language, :classification, :isbn, :book_id, :borrow_status



  def initialize(title, author, language, classification, isbn, book_id, borrow_status)
    @title = title
    @author = author
    @language = language
    @classification = classification
    @isbn = isbn
    @book_id = book_id
    @borrow_status = borrow_status
  end



  def booklist(bl)
     bl = {
    "Title " => @title.title.split(/ |\_|\-/).map(&:capitalize).join(" "),
    "Author " => @author.title.split(/ |\_|\-/).map(&:capitalize).join(" "),
    "Language " => (@language.title),
    "Classification " => @classification,
    "ISBN " => @isbn.to_s,
    "Book ID" => @book_id.to_s,
    "Status" => @borrow_status
    }
    end


  def put_booklist
    booklist.each do |x , y|
      puts "#{x}" , "#{y}"
    end
  end


end

books1 = Book.new("lonely planet: ireland","damian harper","english","tourism",9781786574459,1,"available")
books1.put_booklist

我想知道它有什么问题?

【问题讨论】:

    标签: ruby


    【解决方案1】:

    您的 booklist 方法需要一个参数,但在此调用中您没有传递任何参数

    booklist.each do |x , y|
    

    无论如何,根据booklist 的定义,您不需要也不需要使用该参数。将booklist移至

    def booklist
      {
        "Title " => @title.title.split(/ |\_|\-/).map(&:capitalize).join(" "),
        "Author " => @author.title.split(/ |\_|\-/).map(&:capitalize).join(" "),
        "Language " => (@language.title),
        "Classification " => @classification,
        "ISBN " => @isbn.to_s,
        "Book ID" => @book_id.to_s,
        "Status" => @borrow_status
      }
    end
    

    【讨论】:

    • 感谢您的回复。我用你的方法,但是它返回我:堆栈级别太深(SystemStackError),我仍然感到困惑。
    • 你应该去掉booklist定义中的参数
    • 我的荣幸先生 :)
    猜你喜欢
    • 2014-04-09
    • 2012-12-30
    • 2013-04-18
    • 2016-10-23
    • 2017-06-02
    • 1970-01-01
    • 2012-05-14
    • 1970-01-01
    • 2021-04-17
    相关资源
    最近更新 更多