I have the following nested hash in a Ruby program. How can I write a for
loop that ultimately prints out the element contained in each array?
alternatives = {
"JAVA" => {
"/usr/bin" => [
"java", "keytool", "orbd", "pack200", "rmid",
"rmiregistry", "servertool", "tnameserv", "unpack200"
],
"/usr/lib" => [
"jre", "jre_exports"
],
"/usr/share" => [
"java.1", "keytool.1", "orbd.1", "pack200.1", "rmid.1",
"rmiregistry.1", "servertool.1", "tnameserv.1", "unpack200.1"
]
},
"JDK" => {
"/usr/bin" => [
"javac", "appletviewer", "apt",
"extcheck", "jar", "jarsigner", "javadoc", "javah", "javap",
"jconsole", "jdb", "jhat", "jinfo", "jmap", "jps",
"jrunscript", "jstack", "jstat", "jstatd", "native2ascii",
"policytool", "rmic", "schemagen", "servialver", "wsgen",
"wsimport", "xjc"
],
"/usr/lib" => [
"java_sdk", "java_sdk_exports"
],
"/usr/share/man/man1" => [
"javac.1", "appletviewer.1", "apt.1",
"extcheck.1", "jar.1", "jarsigner.1", "javadoc.1", "javah.1",
"javap.1", "jconsole.1", "jdb.1", "jhat.1", "jinfo.1", "jmap.1",
"jps.1", "jrunscript.1", "jstack.1", "jstat.1", "jstatd.1",
"native2ascii.1", "policytool.1", "rmic.1", "schemagen.1",
"servialver.1", "wsgen.1", "wsimport.1", "xjc"
]
}
}
Here's the pseudo code for what I'm trying to do
alternatives.each do |first_level_keys| # Gets the JAVA, JDK keys
first_level_keys.each do |second_level_keys| # Gets the /usr/... keys
second_level_keys.each do |array|
array.each do |elem|
puts "elem: " + elem
end
end
end
end
I see "Accessing elements of nested hashes in ruby", but can't seem to make sense out of it.