我正在使用 Ruby 制作一個基本的 CLI 網路抓取工具。用戶將被詢問他們想要查看哪個股票指數。他們的輸入將被視為:
$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
}
}
因為會有一個刮板類,資訊將來自那里以及來自這個 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)
我不確定為什么或如何解決這個問題。如果我只使用一個相同的字串,它就可以作業。如果用戶的輸入是同一個字串,則不是。
謝謝你的時間。
uj5u.com熱心網友回復:
您$input已經是一個字串,因此在這種情況下您不需要字串插值。另外"#{"$input"}"將評估為"$input"不是該變數的值。
只是改變
@@requested_index[:exchange] = index_info_resource["#{"$input"}"][:full_name]
到
@@requested_index[:exchange] = index_info_resource[$input][:full_name]
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/353885.html
上一篇:(ArgumentError)Ruby:引數數量錯誤
下一篇:根據多個下拉過濾獲取資料值
