微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

将哈希值保存到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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐