Разбор Ruby Array - PullRequest
       20

Разбор Ruby Array

0 голосов
/ 10 мая 2011

Я новичок в Ruby, как, наверное, все здесь уже знают :) У меня есть запрос к какой-то службе, и я возвращаю массив. Когда я запускаю этот код

@query_result.each do |test|
  puts test
end

Я получаю именно этот вывод

["names", ["s", "label"]] ["values", [["<http://www.udfr.org/test-instance#PDF-1>", "\"Acrobat PDF 1.0 - Portable Document Format\"^^<http://www.w3.org/2001/XMLSchema#string>"], ["<http://www.udfr.org/test-instance#BroadcastWave>", "\"Broadcast WAVE\"^^<http://www.w3.org/2001/XMLSchema#string>"], ["<http://www.udfr.org/test-instance#PNG-1>", "\"Portable Network Graphics\"^^<http://www.w3.org/2001/XMLSchema#string>"], ["<http://www.udfr.org/test-instance#PNG-1-1>", "\"Portable Network Graphics\"^^<http://www.w3.org/2001/XMLSchema#string>"], ["<http://www.udfr.org/test-instance#GIF-1989a>", "\"Graphics Interchange Format\"^^<http://www.w3.org/2001/XMLSchema#string>"], ["<http://www.udfr.org/test-instance#TIFF-4>", "\"Tagged Image File Format\"^^<http://www.w3.org/2001/XMLSchema#string>"], ["<http://www.udfr.org/test-instance#TIFF-6>", "\"Tagged Image File Format\"^^<http://www.w3.org/2001/XMLSchema#string>"], ["<http://www.udfr.org/test-instance#BroadcastWave-1>", "\"Broadcast WAVE\"^^<http://www.w3.org/2001/XMLSchema#string>"], ["<http://www.udfr.org/test-instance#PNG-1-2>", "\"Portable Network Graphics\"^^<http://www.w3.org/2001/XMLSchema#string>"], ["<http://www.udfr.org/test-instance#TIFF-3>", "\"Tagged Image File Format\"^^<http://www.w3.org/2001/XMLSchema#string>"], ["<http://www.udfr.org/test-instance#TIFF-5>", "\"Tagged Image File Format\"^^<http://www.w3.org/2001/XMLSchema#string>"], ["<http://www.udfr.org/test-instance#AVI-Generic>", "\"Audio/Video Interleaved Format\"^^<http://www.w3.org/2001/XMLSchema#string>"], ["<http://www.udfr.org/test-instance#GIF-1987a>", "\"Graphics Interchange Format\"^^<http://www.w3.org/2001/XMLSchema#string>"], ["<http://www.udfr.org/test-instance#WaveformAudio>", "\"Waveform Audio\"^^<http://www.w3.org/2001/XMLSchema#string>"], ["<http://www.udfr.org/test-instance#BroadcastWave-1>", "\"Broadcast WAVE\"^^<http://www.w3.org/2001/XMLSchema#string>"], ["<http://www.udfr.org/test-instance#BroadcastWave>", "\"Broadcast WAVE\"^^<http://www.w3.org/2001/XMLSchema#string>"]]]

Я знаю, что это загадочно, но в основном мне просто нужно извлечь значения из них:

names
s
label
values

Каким будет код для получения фактических значений столбцов из массива?

Ответы [ 3 ]

4 голосов
/ 10 мая 2011

Ваш @query_result имеет структуру:

[["names", ["s", "label"]], ["values", array]]

, где array состоит из пар. Я не вижу ничего полезного из буквенных строк "names", "s", "label" и "values". Вы, вероятно, хотите вывезти array.

Если вы делаете

@query_result[1]

это даст вам второй элемент @query_result, который

["values", array]

Если вы продолжите делать

@query_result[1][1]

Это даст вам array часть:

[
  [
    "http://www.udfr.org/test-instance#PDF-1",
    "\"Acrobat PDF 1.0 - Portable Document Format\"^^http://www.w3.org/2001/XMLSchema#string"
  ],
  [
    "http://www.udfr.org/test-instance#BroadcastWave",
    "\"Broadcast WAVE\"^^http://www.w3.org/2001/XMLSchema#string"
  ],

  ...

]
1 голос
/ 10 мая 2011

Test теперь массив с текущей выбранной строкой. Вы можете использовать

test[index]

чтобы получить ваши данные.

puts test[0]

должен напечатать ["s", "label"].

Поскольку второй массив неровный, вы можете использовать

puts test[1][index]

, чтобы получить запись на основе 0 по индексу значений.

1 голос
/ 10 мая 2011

Да, это загадочно :) Но если эти 4 значения всегда являются первыми 4 массивами, вы можете сделать что-то вроде:

@query_result[0..3].each do |test|
  puts test
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...