【发布时间】:2021-12-17 05:14:48
【问题描述】:
我正在使用 Ruby 制作一个基本的 CLI web scraper。将询问用户他们想查看哪个股票指数。他们的输入将被视为:
$input = gets.chomp.downcase.to_s
我有一个哈希值,用作临时数据库。我知道这不是最佳做法,但这是我仅使用 Ruby 对象提出的最佳做法。
示例哈希:
index_info_resource = {
"dax" => {
full_name: "Deutscher Aktienindex (German stock index)",
exchange: "Frankfurt Stock Exchange"
web_site: "investing.com/dax/test
},
"fchi" => {
full_name: "Cotation Assistée en Continu",
exchange: "Euronext Paris"
web_site: "investing.com/fchi/test
}
}
因为会有一个 scraper 类,信息将来自那里以及来自这个 db 哈希,我正在考虑制作一个暂存哈希:@@requested_index = Hash.new 然后我将在其中添加信息我需要这样:
@@requested_index[:full_name] = index_info_resource["#{"dax"}"][:full_name]
我的问题是,当我以这种方式使用用户输入时:
@@requested_index[:exchange] = index_info_resource["#{"$input"}"][:full_name]
我收到此错误:
undefined method `[]' for nil:NilClass (NoMethodError)
我不知道为什么或如何解决这个问题。如果我只使用相同的字符串,它就可以工作。如果用户输入的是同一个字符串,则不是。
感谢您的宝贵时间。
【问题讨论】:
-
看看
YAML::Store,这是一种将哈希保存到文件ruby-doc.org/stdlib-2.4.0/libdoc/yaml/rdoc/YAML/Store.html的内置方法