Программа, которую я создаю, имеет простой файл конфигурации, похожий на этот.
@overlays = {
:foo => "http://www.bar.com",
:bar => nil,
}
Что мне нужно сделать, так это пройти через этот хэш и получить следующий вывод.
OverlayKey[0]='foo'
OverlayVal[0]='http://www.bar.com'
OverlayKey[1]='bar'
OverlayVal[1]='nil'
Для того, чтобы сохранить мою конфигурацию, как я хочу, мне нужны поддельные индексы. Лучше бы не добавлять числа в хеш, это сделало бы конфигурацию немного уродливой. Поэтому я играл с искусственным генерированием чисел во время вывода.
Это уродливо, но я сейчас просто играю с этим.
def makenumbers
@numbers = []
length = @overlays.length - 1
(0..length).each do |num|
@numbers.push("#{num}")
end
end
makenumbers
@overlays.each do |key,val|
@numbers.each do |num|
puts "OverlayKey['#{num}']='#{key}'"
puts "OverlayVal['#{num}']='#{val}'"
end
end
Что дает мне что-то вроде этого.
OverlayKey['0']='foo'
OverlayVal['0']='http://www.bar.com'
OverlayKey['1']='foo'
OverlayVal['1']='http://www.bar.com'
OverlayKey['0']='bar'
OverlayVal['0']=''
OverlayKey['1']='bar'
OverlayVal['1']=''
Поймите, почему это не дает мне желаемого результата, хотя, немного поиграв с ним, я не совсем уверен, как сделать то, что я хочу, без добавления чисел в хеш во время настройки. Конечно, это довольно просто, я просто не могу обернуться вокруг него.