- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:2次元Hashのkeyチェック方法)
2次元Hashのkeyチェック方法
このQ&Aのポイント
- YAMLで記述した設定ファイルを読み込んで、設定値があれば変数にセットし、なければdefault値を使うプログラムを書きたいです。
- 現在のコードでは、2次元のHashのキーをチェックして変数にセットしていますが、もっと短く書く方法はありませんか?
- confが3回も出てくるので、無駄を感じています。ハッシュのキーがyamlに記述されているかどうかわからない状況で書きたいです。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
"top_dir" が無い場合、"linux" が無い場合をそれぞれ考慮するとなると、confと書くのは最低二回は要るでしょう。 nil? という判断条件をひっくり返すことで、conf["top_dir"]["linux"]を一回に出来ます。~.nil? が出てきたら見直した方が良いでしょうね。 str = conf["top_dir"] && conf["top_dir"]["linux"] || "/root" conf一回で済ませるパズル的解法としては、nilの添え字参照がエラーにならないようにする。 def nil.[](x) end str = conf["top_dir"]["linux"] || "/root" パズルの回答以外ではやめた方が良いでしょう。デバッグがしにくくなります。 begin str = conf["top_dir"]["linux"] || "/root" rescue str = "/root" end も駄目でしょう。こんな目的で例外を使ってはいけない。
お礼
ありがとうございました。参考になりました。