Как мне интерпретировать этот вывод отладчика? - PullRequest
0 голосов
/ 05 января 2019

Может кто-нибудь сказать мне, как получить n-е значение, скажем, 3-й val (который равен 1) в children[0] в следующем выводе отладчика? Я пытался children[0][2], но не работал.

children = Array (101 elements)
 [0] = Hash (1 element)
  bitstring => Array (100 elements)
   key = {Symbol} bitstring
   value = Array (100 elements)
    [0] = 1
    [1] = 0
    [2] = 1
    [3] = 1
    [4] = 1
    [5] = 1

1 Ответ

0 голосов
/ 07 января 2019

Вы получите его через children[0][:bitstring][2], что легко увидеть из вывода отладчика.

Структура вывода отладчика представляет собой список variable_name = {Class} value, где {Class} - это тип класса значения, если он не является примитивом или коллекцией, и в этом случае эта часть (включая фигурные скобки) опущены.

Когда value - это какая-то коллекция, тип коллекции и количество элементов в коллекции показываются в том месте, куда идет value, а затем начинаются со следующей строки и с дополнительным отступом, каждый элемент указан в форме accessor = value. Если это значение также является коллекцией, то происходит то же самое: тип коллекции и количество элементов в коллекции показываются в том месте, куда идет value, а затем начинаются со следующей строки и с дополнительным отступом. Итак, когда вы смотрите на это:

children = Array (101 elements)
 [0] = Hash (1 element)
  bitstring => Array (100 elements)
   key = {Symbol} bitstring
   value = Array (100 elements)
    [0] = 1
    [1] = 0
    [2] = 1
    [3] = 1
    [4] = 1
    [5] = 1

Вы должны увидеть это

  • children является массивом
  • children[0] - это хеш
  • children[0][:bitstring] - это массив
  • children[0][:bitstring][2] является третьим элементом массива :bitstring, а его значением является целое число 1

То, как вы знаете, что хэш-ключ :bitstring, а не "bitstring", заключается в том, что для хэша каждый элемент сам по себе является набором key и value, поэтому вы видите это под строкой bitstring => Array (100 elements) 2 строки, одна из которых начинается с key, а другая начинается с value. key указан как {Symbol} bitstring, что говорит о том, что это символ :bitstring. Если бы ключ был строкой, он бы просто сказал key = "bitstring" (обратите внимание на кавычки).

...