I got a basic ruby question. Did some tutorials a while ago but can't seem to wrap my mind about this problem:
class DependencyReader
@tree
@dependenciesFromFile
def read_file
@tree = { }
file = File.new("resources/2.Resource.txt", "r")
@dependenciesFromFile = Hash.new
while (line = file.gets)
splitLine = line.split
firstLetter = splitLine.shift
firstLetter.downcase!
depenendenciesInRow = splitLine
@dependenciesFromFile[firstLetter] = depenendenciesInRow
end
get_tree 'a'
file.close
end
def get_tree(letter)
unless @tree.has_key? letter
#add the index to that tree
@tree[letter] = Array.new
end
puts @tree
@tree.each do |key, value|
value.push(@dependenciesFromFile[letter])
end
puts @dependenciesFromFile
#prints
# {"a"=>["B", "C"], "b"=>["C"], "c"=>["D", "E"], "d"=>["F"]}
puts @dependenciesFromFile["a"]
#prints nothing
#gives error
@dependenciesFromFile["a"].each do |key, value|
get_tree value
end
puts @tree
end
end
The problem occurs here:
puts @dependenciesFromFile
#prints
# {"a"=>["B", "C"], "b"=>["C"], "c"=>["D", "E"], "d"=>["F"]}
puts @dependenciesFromFile["a"]
#prints nothing
#gives error
@dependenciesFromFile["a"].each do |key, value|
get_tree value
end
It's certainly filled but when I try to read it with a string as key. It gives nothing back.
After that the .each method gives error because it can't loop on Nil
Edit:
The code out of another class that invokes the read_file method, which calls on his turn the get_tree method.
reader = DependencyReader.new
reader.read_file