bea*_*akr 0 ruby yaml hashtable
我有一个像这样的YAML文件:
options:
some_option: 'foo'
Run Code Online (Sandbox Code Playgroud)
我加载为哈希yaml,我希望能够使用它include?来获取一个布尔值,告诉它是否存在密钥.
要获取子键options,我通常会使用yaml["options"]["some_option"],但是如何判断YAML哈希是否包含["options"]["some_option"]?你做不了类似的事情:
if yaml.include? "options"["some_option"] # or
if yaml.include? ["options"]["some_option"] # or even
if yaml.include? yaml["options"]["some_option"]
Run Code Online (Sandbox Code Playgroud)
有没有办法检索optionsYAML哈希中的子键?
根据yaml文件中的预期值,您可以使用Ruby的类型转换:
if yaml["options"] && yaml["options"]["some_option"]
Run Code Online (Sandbox Code Playgroud)
如果yaml["options"]不存在,它将返回nil,这将使if语句短路并返回false.
显然,如果"some_option"的有效值为false,则无法作为存在检查.您需要明确使用has_key?:
if yaml.has_key?("options") && yaml["options"].has_key?("some_option")
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3423 次 |
| 最近记录: |