Это мой рубиновый файл с хэшем:
book.rb
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
, у меня уже есть пять пар ключ-значение для этого хэша,они находятся в файле ruby с именем top.rb :
$books1 = Book.new("lonely planet: ireland","damian harper","english","tourism",9781786574459,1,"available")
$books2 = Book.new("ninteen eighty four","george orwell","english","literature",9781374677817, 2,"available")
$books3 = Book.new("japanese in 30 days","naomi ono","japanese","education",9787928365729,3,"available")
$books4 = Book.new("brand famous: how to get everyone talking about your business","linzi boyd","english","business",9780857084903,4,"borrowed")
$books5 = Book.new("SQL in 10 mins","ming zhong, xiaoxia liu","chinese","hi tech",9787115313980,5,"unavailable")
и для вывода результата используют метод ниже:
def status
bookstatus = gets.chomp.to_s
if bookstatus == "status"
puts "Status:" + "\n" + "#{$books1.booklist[:Book_ID]}: #{$books1.booklist[:Title]}: #{$books1.booklist[:Status]}"
puts "#{$books2.booklist[:Book_ID]}:#{$books2.booklist[:Title]}: #{$books2.booklist[:Status]}"
puts "#{$books3.booklist[:Book_ID]}:#{$books3.booklist[:Title]}: #{$books3.booklist[:Status]}"
puts "#{$books4.booklist[:Book_ID]}:#{$books4.booklist[:Title]}: #{$books4.booklist[:Status]}"
puts "#{$books5.booklist[:Book_ID]}:#{$books5.booklist[:Title]}: #{$books5.booklist[:Status]}"
else
puts "error"
end
end
Сейчас я собираюсь добавить еще немного значения, я позволю пользователю вводить информацию о книгах (например, title = gets.chomp.to_s) и создаю новую пару ключ-значение для книги.
Как я знаю, добавить новую пару ключ-значение в ruby можно следующим образом:
my_hash = {:a => 5}
my_hash[:key] = "value"
Но у хэша в book.rb нет имени, я попытался дать ему имякак
book_list = {
:Title => @title,
:Author => @author,
:Language => @language,
:Classification => @classification,
:ISBN => @isbn,
:Book_ID => @book_id,
:Status => @borrow_status,
}
будет выводить ошибку.
Мой вопрос, я хотел бы знать, как я могу добавить новую пару ключ-значение в хеш вмой рубиновый файл, у которого нет имени?
Спасибо.