Ruby中如何让Hash存储的产品数据在程序结束后保留?
Ruby程序结束后保留Hash数据的实现方法
完全可行,核心思路是把Hash数据持久化到外部存储(比如文件或数据库),程序启动时再从存储中加载。下面是几种适合初学者的简单实现方法:
方法一:用JSON格式存储(标准库支持)
JSON是通用的数据格式,适合跨语言读取,Ruby的json标准库可以直接处理Hash和JSON的转换:
require 'json' # 指定保存数据的文件路径 DATA_FILE = 'products.json' # 加载已保存的产品数据 def load_products File.exist?(DATA_FILE) ? JSON.parse(File.read(DATA_FILE)) : {} end # 将当前Hash数据写入文件 def save_products(products) File.write(DATA_FILE, JSON.pretty_generate(products)) end # 程序示例 products = load_products # 添加或修改产品 products["苹果"] = 5.99 products["香蕉"] = 3.49 # 保存数据,确保程序退出后数据不丢失 save_products(products)
方法二:用YAML格式存储(更易读)
YAML是一种人类友好的序列化格式,同样属于Ruby标准库,适合存储简单的键值对:
require 'yaml' DATA_FILE = 'products.yml' def load_products File.exist?(DATA_FILE) ? (YAML.load_file(DATA_FILE) || {}) : {} end def save_products(products) File.write(DATA_FILE, products.to_yaml) end # 使用示例 products = load_products products["纯牛奶"] = 8.99 save_products(products)
注意事项
- 文件路径可自行调整(比如放到
~/.my_app_products.yml),避免被误删除 - 如果数据包含敏感信息,建议加密后再写入文件
- 若有多进程/线程同时读写文件,需要添加文件锁防止数据损坏
内容的提问来源于stack exchange,提问作者Veronica Rodrigues
相关产品推荐
相关产品推荐

