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编程非常陌生,我想知道如何破译上面显示的错误堆栈。我不知道如何判断错误首先出现在哪一行。我是否按时间顺序阅读堆栈?这是代码的GitHub repo:错误发生在第31行。这通常是正确的,但有时实际问题会发生在其他地方,Ruby会在以后对此进行抱怨。这在语法错误(例如缺少结束块)中更常见。下一条线索是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号线 在这一点上,你有两个选择。
+
,因此请查看您在哪里这样做。看起来您正在尝试将数组连接到不允许的字符串
堆栈跟踪的其余部分告诉您如何到达该行代码。所以,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>'