У меня есть некоторые данные для сортировки в виде массива в форме ['a1', 'b321', 'a33', 'c', ...]
. Я хочу поместить все «aN» в sorted_data[:a]
и т. Д. Код ниже проходит через данные и корректно запускает регулярное выражение. То, что он не делает, это поместить их в нужное место - sorted_data[filter[:key]]
is null. Как использовать filter[:key]
в качестве ключа к sorted_data
? Спасибо.Использование переменной внутри хэша в качестве ключа к другому хешу
sorted_data = { a: Array.new,
b: Array.new,
c: -1 }
filters = [{ re: /^a\d+$/, key: 'a' },
{ re: /^b\d+$/, key: 'b' },
{ re: /^c$/, key: 'c' }]
['a1', 'b321', 'a33', 'c', 'b', 'b1'].each {|cell|
filters.each {|filter|
if cell.match(filter[:re])
puts "#{cell} should go in #{filter[:key]}" + '....[' + sorted_data[filter[:key]].to_s + ']....'
break
end
}
}
Выход вышеперечисленное
# a1 should go in a....[]....
# b321 should go in b....[]....
# a33 should go in a....[]....
# c should go in c....[]....
# b1 should go in b....[]....
Может быть, потому что ': а ! = 'a''? –
Не могли бы вы быть более полезными? – gotofritz
'sorted_data' имеет символьные ключи (': a,: b,: c'), 'фильтры' определяют ключи как строки (' "a", "b", "c" ') –