如何解释此调试器输出?

时间:2019-01-05 07:38:43

标签: ruby debugging intellij-idea rubymine

谁能告诉我如何获取第n个值,例如以下调试器输出中的children[0]中的第3个val(即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

1 个答案:

答案 0 :(得分:0)

您可以通过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"(请注意引号)。