我正在尝试在哈希上运行.each。但是,有时它是零。当我检查它是否为零时......它说它不是。然后我得到以下异常:
undefined method `[]' for nil:NilClass
这是我的代码。知道为什么它不起作用吗?
if @abc[:def] != nil
@abc[:def].each do |ghi| <---- Fails Here
.
.
.
end
end
任何想法/建议都会很棒。
更新
@abc不是零。如果我做abc的PUTS,我收到以下内容:
puts "abc: #{@abc}"
abc: {:val1=>"123", :val2=>"234"}
puts "abc[:def]: #{@abc[:def]}"
abc[:def]: []
@abc是使用YAML创建的。这是如何实例化的。
@abc = YAML.load(File.open(pathToYamlFile/yamlFile.yml))
答案 0 :(得分:2)
尝试
if @abc && @abc[:def]
@abc[:def].each do |ghi|
.
.
.
end
end
如果您仍然收到错误,那么它可能发生在块中,错误消息只是找到块开始的行。
答案 1 :(得分:0)
if @abc.nil? && @abc[:def].nil?
# do the other stuffs
end
答案 2 :(得分:0)
而不是if @abc[:def] != nil
使用
if @abc.key?(:def) && !@abc[:def].nil?