к переменному, у меня есть хэш хэш массивов:Ruby: помещает значение и имя
hash = Hash.new do |hash, key|
hash[key] = Hash.new do |hash, key|
hash[key] = Array.new
end
end
У меня также есть цикл, который получает значение от 3-х переменных:
author = gets.chomp
file = gets.chomp
time = Time.now
Этих 3 переменных соответствуют 3 поколениям моего хэша: автор является переменной первого поколения и равен хешу; file - это переменная второго поколения и равна массиву; время - это переменная третьего поколения и равна простому значению.
Это, как я намеревался присвоить значения хэш:
hash[author][file] = file
hash[author][file].push(time)
Моя проблема заключается в том, что когда я хочу, чтобы реализовать автора и файл в хэш, я думаю, что я разрушаю второе поколение хэш или массив и установить переменную равной простому значению вместо:
hash[author][file] = file #here, instead of adding a new key in the 2nd generation hash, I replace the hash with a single value.
hash[author][file].push(time) #the "file" variable isn't an array anymore, it is a string, so I can't push anything in it.
Могу ли я сделать что-то вроде проталкивая значение в хэш, поэтому он становится ключом?
Если нет, то как я могу что-то, что дало бы мне этот результат:
КОД:
hash = {1 => {"a1" => ["un", "uno"], "a2" => ["uunn", "uunnoo"]}, 2 => {"b1" => ["deux", "dos"], "b2" => ["ddeuxx", "ddooss"]}}
hash.each do |key, value|
puts key
value.each do |key, value|
puts key
value.each do |value|
puts value
end
end
end
РЕЗУЛЬТАТ:
1
a1
un
uno
a2
uunn
uunnoo
2
b1
deux
dos
b2
ddeuxx
ddooss
Что искать ваши входные данные как? Вы не «нажимаете» значения в хеши, вы просто назначаете их. – tadman
Я добавлю это к сообщению – nounoursnoir
Это похоже на хороший кандидат для пользовательского класса или Struct. Сложные структуры данных с использованием примитивов, таких как хеши и массивы, теперь являются рецептом головных болей и основными головными болями. – moveson