我没有让它正常工作。
我有一个哈希数组,其中包含不同深度的嵌套哈希数组。如果任何嵌套结果为false,则必须返回false,否则为true。
array = [
{
result: true,
dependents: [
{
result: true,
dependents: [
{result: true},
{result: false}
]
}
]
},
result: true,
dependents: []
]
def result(array)
if array.find {|line| line[:result] == false}
return false
else
array.each do |line|
result(line[:dependents])
end
end
true
end
result(array)
#=> true (should be false)
方法result()
目前无法正常工作,因为它对给定数组返回true并且应该为false。有什么想法吗?
答案 0 :(得分:1)
result(line[:dependents])
可能必须
return false if not result(line[:dependents]) ## Or unless ...
或者只是简单地
result(line[:dependents]) or return false
答案 1 :(得分:1)
您以递归方式调用result
方法,但当该调用的结果返回false时,您不会中断。
def result(array)
array.each do |h|
return false if h[:result] == false
return false if h[:dependents] && result(h[:dependents]) == false
end
true
end