加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

将哈希值保存到Ruby上

发布时间:2020-12-16 19:35:00 所属栏目:百科 来源:网络整理
导读:我只是在编程方面迈出了第一步.我刚刚在Code Academy完成了另一堂课.这次我被要求创建一个小电影目录. 这是我的问题:如何在文件而不是自己的代码中保存/加载带有电影标题和评级的哈希? 以下是代码现在的样子(用葡萄牙语写几句,但你可能会忽略它: movies =
我只是在编程方面迈出了第一步.我刚刚在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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读