将哈希值保存到Ruby上

前端之家收集整理的这篇文章主要介绍了将哈希值保存到Ruby上前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我只是在编程方面迈出了第一步.我刚刚在Code Academy完成了另一堂课.这次我被要求创建一个小电影目录.
这是我的问题:如何在文件而不是自己的代码中保存/加载带有电影标题和评级的哈希?

以下是代码现在的样子(用葡萄牙语写几句,但你可能会忽略它:

movies = {
    Memento: 3,Primer: 4,Ishtar: 1
    }

    puts "O que você gostaria de fazer?"
    puts "-- Digite 'add' para adicionar um filme."
    puts "-- Digite 'update' para atualizar um filme."
    puts "-- Digite 'display' para mostrar todos os filmes."
    puts "-- Digite 'delete' para deletar um filme."

    choice = gets.chomp.downcase
    case choice
    when 'add'
      puts "Que filme você gostaria de adicionar?"
      title = gets.chomp
      if movies[title.to_sym].nil?
        puts "Qual a nota? (Digite um número de 0 a 4.)"
        rating = gets.chomp
        movies[title.to_sym] = rating.to_i
        puts "#{title} foi adicionado com uma nota de #{rating}."
      else
        puts "Esse filme já existe na lista! Sua nota é #                        {movies[title.to_sym]}."
      end
    when 'update'
      puts "Que filme você gostaria de atualizar?"
      title = gets.chomp
      if movies[title.to_sym].nil?
        puts "Filme não encontrado!"
      else
        puts "Qual é a nova nota? (Digite um número de 0 a 4.)"
        rating = gets.chomp
        movies[title.to_sym] = rating.to_i
        puts "#{title} foi atualizado,sua nova nota é #{rating}."
      end
    when 'display'
      movies.each do |movie,rating|
        puts "#{movie}: #{rating}"
      end
    when 'delete'
      puts "Que filme voce gostaria de deletar?"
      title = gets.chomp
      if movies[title.to_sym].nil?
        puts "Filme não encontrado!"
      else
        movies.delete(title.to_sym)
        puts "#{title} foi deletado."
      end
    else
      puts "Desculpa,não entendo o que você quer."
    end

如您所见,目录包含在代码开始时的哈希值中,但它不保存信息.我怎么能把它存放好呢?

感谢你们!

解决方法

如果它们是简单的哈希值,那么YAML文件可能是一种简单的方法.
require 'yaml'

# write hash out as a YAML file
movies = { Memento: 1,Ishtar: 1 }
File.write('movies.yml',movies.to_yaml)

# read back in from file
from_file = YAML.load_file('movies.yml')

# use it
from_file[:Memento]
# => 1 
from_file[:Primer]
# => 4

猜你在找的Ruby相关文章