首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在不同的文件中使用属性?

如何在不同的文件中使用属性?
EN

Stack Overflow用户
提问于 2018-10-24 05:40:39
回答 1查看 30关注 0票数 0

我正在完成我的课程,一个简单的图书馆系统。

我面临的问题如下:

book.rb

代码语言:javascript
复制
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 bookid
    @book_id
  end

  def booklist
    @title = @title.split(/ |\_|\-/).map(&:capitalize).join(" ")
    @author = @author.split(/ |\_|\-/).map(&:capitalize).join(" ")
    @language = @language.capitalize!
    @isbn.to_s
    @book_id.to_s

    {
        "Title" => @title,
        "Author" => @author,
        "Language" => @language,
        "Classification" => @classification,
        "ISBN" => @isbn,
        "Book ID" => @book_id,
        "Status" => @borrow_status,
    }
  end


end

user.rb

代码语言:javascript
复制
require_relative 'book.rb'

class User
  attr_accessor :name, :address, :gender, :age, :id, :borrow

  def initialize(name, address, gender, age, id, borrow)
    @name = name
    @address = address
    @gender = gender
    @age = age
    @id = id
    @borrow = borrow
  end

  def userlist
    @name = @name.split(/ |\_|\-/).map(&:capitalize).join(" ")
    @address = @address.split(/ |\_|\-/).map(&:capitalize).join(" ")
    @age.to_s
    @id.to_s

    if @borrow.nil?
      puts "nothing"
    elsif
      puts #I wish I can put book's name here, if I entered correct @borrow. eg.,for user3's @borrow=4(in top.rb), user3.@borrow=book4.@book_id, then print @name of book4
    else
      puts "error"
    end

问题出在user.rb内部的if-elsif-else循环中,

如果我输入正确的@

,我希望我能把书的名字写在这里。例如,对于用户3的@borrow=4(在top.rb中),user3.@borrow=book4.@book_id,然后print @name of book4

有什么解决方案吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-10-24 06:27:38

代码语言:javascript
复制
#user.rb
require_relative 'book.rb'

class User
  attr_accessor :name, :address, :gender, :age, :id, :borrow

  def initialize(name, address, gender, age, id, borrow)
    @name = name
    @address = address
    @gender = gender
    @age = age
    @id = id
    @borrow = borrow
  end

  def userlist
    @name = @name.split(/ |\_|\-/).map(&:capitalize).join(" ")
    @address = @address.split(/ |\_|\-/).map(&:capitalize).join(" ")
    @age.to_s
    @id.to_s

    if borrow.nil?
      puts "nothing"
    elsif borrow
      puts borrow.title
    else
      puts "error"
    end
  end
end

@book = Book.new('Book1', 'Auth1', 'EN', 'fiction', 'isb123', 1, 'borrowed')
@user = User.new('Mr Foo', '123 st', 'male', 23, 123, nil)
@user.borrow=@book
@user.userlist 
#=>Book1

但是,您可能希望发送一个图书数组,然后需要修改您的方法来处理数组

代码语言:javascript
复制
def userlist
  @name = @name.split(/ |\_|\-/).map(&:capitalize).join(" ")
  @address = @address.split(/ |\_|\-/).map(&:capitalize).join(" ")
  @age.to_s
  @id.to_s

  if borrow.nil?
    puts "nothing"
  elsif borrow.length > 0 # checks if anythint in the array
    borrow.each{ |b| puts b.title }
  else
    puts "error"
  end
end
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52958213

复制
相关文章

相似问题

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