結帳這個多維散列:獲取父多維散列
hash = {
A: {
name: 'A', children: {}
},
B: {
name: 'B', children: {
B1: {
name: 'B1', children: {
B1i: {
name: 'B1i', children: {}
},
B1ii: {
name: 'B1ii', children: {}
},
B1iii: {
name: 'B1iii', children: {}
},
B1iv: {
name: 'B1iv', children: {}
}
},
},
},
},
C: {
name: 'C', children: {
C1: {
name: 'C1', children: {}
},
C2: {
name: 'C2', children: {}
}
},
},
}
def is_a_child_of(parent, child)
child.parent[:name] == parent ? true : false
end
hash.each do |key, f1|
puts "F1 generation member: #{f1[:name]}"
f1[:children].each do |key, f2|
is_a_child_of('B2', f2)
puts "F2 generation member: #{f2[:name]}"
f2[:children].each do |key, f3|
puts "F3 generation member: #{f3[:name]}"
end
end
end #=>
#
# F1 generation member: A
# F1 generation member: B
# F2 generation member: B1
# F3 generation member: B1i
# F3 generation member: B1ii
# F3 generation member: B1iii
# F3 generation member: B1iv
# F1 generation member: C
# F2 generation member: C1
# F2 generation member: C2
#
什麼是找出每個「個人的」父母最高效方式?這裏有一個我希望使用的真理方法:
def is_a_child_of(parent, child)
child.parent[:name] == parent ? true : false
end
但是,child.parent
是完整的僞代碼。我怎麼能實現這個父方法?
或者,它會更efficient
簡單地登錄每個循環中的父項?更多的僞代碼:
hash.each_with_parent do |parent, key, value|
end
我怎麼能實現這個each_with_parent
循環?
將一個選項保存在每個散列中的父母?
例如
B: {
name: 'B', children: {
B1: {
name: 'B1', parent: 'B', children: {}
}
}
}
'parent.values.any? {| v | v ==孩子}'? –
@UriAgassi我敢打賭這是效率最低的方法。 – mudasobwa
@mudasobwa - 好的,那麼'parent.values.any? {| v | v.equal?孩子}' –