ruby - 如果 Ruby 中的程序创建散列并将这些散列保存在另一个文件中,它会是什么样子?
问题描述
我对 Ruby 编程真的很陌生,我在互联网上找不到任何与创建哈希并将它们存储在另一个文件中的程序相关的内容。.rb 文件的代码看起来像什么?
解决方案
通常Ruby 哈希不会直接写入文件。我们使用 JSON 或 YAML 等序列化格式,以便文件可以被除 Ruby 之外的其他编程语言和工具读取。
让我们以 JSON 为例,因为它是最常见的。我们可以轻松地从 JSON 读取/写入
require 'json'
path = "path.json"
hsh = { a: 1, b: 2 }
# Write to the file
File.open(path, "w") do |file|
file.write hsh.to_json
end
# Read from the file
hsh2 = JSON.parse(File.read(path))
# let's print them out for inspection
print hsh
# => {:a=>1, :b=>2}
print hsh2
# => {"a"=>1, "b"=>2}
如您所见,哈希在技术上并不相同,这是因为 JSON 没有符号数据类型(顺便说一下,YAML 有)。但它们确实包含相同的数据。
请注意,作为对您对此处目标的评论的回应。您要求的是人类可读的数据序列化格式,幸运的是 JSON 和 YAML 都是人类可读的,并且一直用于此目的。
要使用 YAML,只需将前面示例中的and调用分别require 'yaml'
替换为and即可。YAML 默认情况下非常易于阅读,我会搜索有关其语法的教程以熟悉它。to_json
JSON.parse
to_yaml
YAML.load
to_json
默认情况下不那么可读,因为它将所有内容都转储在同一行,但您可以使用JSON.pretty_generate(hsh)
它,它会使事情变得更好。
推荐阅读
- revit-api - 如何检索选定房间的墙壁?
- java - 如何在 JPA Criteria API 上正确使用 JOIN
- python - 如何在 Python 中使用 PyWavelets 和 numpy 接收小波包变换后的值列表?
- sql - SQL查询传入和传出的股票,第一个和最后一个
- java - SnakeYAML - 文档和项目主页在哪里(它还活着)?
- android - Flutter 错误:非活动 InputConnection 上的 getSelectedText。在接受输入的同时获得
- nuget-package - 如何找出 Nuget 包中的主要问题
- java - Firebase Storage StorageTask Class 参数化类“StorageTask”的原始使用
- java - java android onResponse 和 onFailure 不起作用
- directory - HTML 或 javascript 获取 %appdata% 文件夹路径