如何解释此调试器输出?

How do I interpret this debugger output?

任何人都可以告诉我如何获得第 n 个值,假设在以下调试器输出中的 children[0] 中的第 3 个值(即 1)?我尝试了 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

您可以通过 children[0][:bitstring][2] 获取它,这可以很容易地从调试器输出中看到。

调试器输出的结构方式是 variable_name = {Class} value 的列表,其中 {Class} 是值的 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" 的方式是,对于散列,每个元素本身就是 keyvalue 的集合, 所以你看到 bitstring => Array (100 elements) 行下面有 2 行,一行以 key 开头,另一行以 value 开头。 key 列为 {Symbol} bitstring,告诉您它是符号 :bitstring。如果键是一个字符串,它只会说 key = "bitstring"(注意引号)。