Ruby中正确的调试方法 RubyAlgorithmsTest.rb:31:在“+”中:没有将数组隐式转换为字符串(TypeError) 来自RubyAlgorithmsTest.rb:31:in'block in get_dependencies' 来自RubyAlgorithmsTest.rb:29:in'each' 来自RubyAlgorithmsTest.rb:29:in'get_dependencies' 来自RubyAlgorithmsTest.rb:81:in'read_file' 来自RubyAlgorithmsTest.rb:90:in`'

Ruby中正确的调试方法 RubyAlgorithmsTest.rb:31:在“+”中:没有将数组隐式转换为字符串(TypeError) 来自RubyAlgorithmsTest.rb:31:in'block in get_dependencies' 来自RubyAlgorithmsTest.rb:29:in'each' 来自RubyAlgorithmsTest.rb:29:in'get_dependencies' 来自RubyAlgorithmsTest.rb:81:in'read_file' 来自RubyAlgorithmsTest.rb:90:in`',ruby,debugging,syntax,runtime-error,Ruby,Debugging,Syntax,Runtime Error,我对Ruby编程非常陌生,我想知道如何破译上面显示的错误堆栈。我不知道如何判断错误首先出现在哪一行。我是否按时间顺序阅读堆栈?这是代码的GitHub repo:错误发生在第31行。这通常是正确的,但有时实际问题会发生在其他地方,Ruby会在以后对此进行抱怨。这在语法错误(例如缺少结束块)中更常见。下一条线索是+,因此请查看您在哪里这样做。看起来您正在尝试将数组连接到不允许的字符串 堆栈跟踪的其余部分告诉您如何到达该行代码。所以,90号线叫做81号线,29号线,31号线 在这一点上,你有两个选择。

我对Ruby编程非常陌生,我想知道如何破译上面显示的错误堆栈。我不知道如何判断错误首先出现在哪一行。我是否按时间顺序阅读堆栈?这是代码的GitHub repo:

错误发生在第31行。这通常是正确的,但有时实际问题会发生在其他地方,Ruby会在以后对此进行抱怨。这在语法错误(例如缺少结束块)中更常见。下一条线索是
+
,因此请查看您在哪里这样做。看起来您正在尝试将数组连接到不允许的字符串

堆栈跟踪的其余部分告诉您如何到达该行代码。所以,90号线叫做81号线,29号线,31号线

在这一点上,你有两个选择。您可以在第31行上方放置一些
放置依赖项。检查
放置找到的\u依赖项。检查
并查看其内容

或者你可以使用像Pry这样的工具(强烈推荐!)暂停程序来检查它。为此,您需要:

  • 通过“gem安装撬”安装gem
  • 在ruby文件的顶部添加以下两行:

    需要“rubygems” 需要“窥探”

  • 在第31行上方添加一行
    binding.pry

  • 现在像平常一样运行你的程序
  • 当Ruby到达binding.pry行时,它将打开一个IRB(技术上是pry,但也是类似的)提示符,您可以在那里检查代码


    因此,您只需键入
    dependencies.class
    之类的内容,它就会返回结果。它非常适合在该位置查看数据,找出错误所在。

    错误发生在第31行。这通常是正确的,但有时实际问题会发生在其他地方,Ruby会在以后对此进行抱怨。这在语法错误(例如缺少结束块)中更常见。下一条线索是
    +
    ,因此请查看您在哪里这样做。看起来您正在尝试将数组连接到不允许的字符串

    堆栈跟踪的其余部分告诉您如何到达该行代码。所以,90号线叫做81号线,29号线,31号线

    在这一点上,你有两个选择。您可以在第31行上方放置一些
    放置依赖项。检查
    放置找到的\u依赖项。检查
    并查看其内容

    或者你可以使用像Pry这样的工具(强烈推荐!)暂停程序来检查它。为此,您需要:

  • 通过“gem安装撬”安装gem
  • 在ruby文件的顶部添加以下两行:

    需要“rubygems” 需要“窥探”

  • 在第31行上方添加一行
    binding.pry

  • 现在像平常一样运行你的程序
  • 当Ruby到达binding.pry行时,它将打开一个IRB(技术上是pry,但也是类似的)提示符,您可以在那里检查代码


    因此,您只需键入
    dependencies.class
    之类的内容,它就会返回结果。它非常适合在该位置查看数据并找出错误所在。

    实际错误在第一行。其余的行是正在执行的程序的调用堆栈。它告诉你Ruby是怎么到那里的。您在RubyAlgorithmsTest.rb中的第31行出现错误。您试图将数组类添加到字符串类中。实际错误在第一行。其余的行是正在执行的程序的调用堆栈。它告诉你Ruby是怎么到那里的。您在RubyAlgorithmsTest.rb中的第31行出现错误。您正在尝试将数组类添加到字符串类中。
    RubyAlgorithmsTest.rb:31:in `+': no implicit conversion of Array into String (TypeError)
        from RubyAlgorithmsTest.rb:31:in `block in get_dependencies'
        from RubyAlgorithmsTest.rb:29:in `each'
        from RubyAlgorithmsTest.rb:29:in `get_dependencies'
        from RubyAlgorithmsTest.rb:81:in `read_file'
        from RubyAlgorithmsTest.rb:90:in `<main>'