【发布时间】:2016-05-23 18:53:00
【问题描述】:
假设我有一个相当复杂的 if 语句:
if (f_request <= mmt and f_request >= mt) and (t_request >= s)
有没有办法将它包裹在 puts 语句或类似语句中以打印出逻辑,而不是变量名,而是它们的值?
例如,不必输入:
puts "if (#{f_request} <= #{mmt} and #{f_request} >= #{mt}) and (#{t_request} >= #{s})"
我可以在原始逻辑上运行一些方法(或一些简单的方法将其复制粘贴到方法自定义方法中),例如:
print_logic("if (f_request <= mmt and f_request >= mt) and (t_request >= s)")
这样我就可以得到如下输出:
if (6 <= 54 and 6 >= 4) and (3 >= 25000)
所以我可以清楚地看到逻辑是如何工作的,也许还可以返回逻辑的真假。
似乎比使用p 或puts 转储变量或必须使用嵌入的逻辑运算符构造长字符串更容易调试。
谢谢
【问题讨论】:
-
使用调试器单步执行代码可能会更容易。
-
@Jordan 你能扩展一下吗。我不知道 ruby 有一个调试器。如何在特定变量等上放置断点并设置“监视”?
-
byebug 具有这些功能。查看pry-byebug(您可以单独使用 byebug,但使用 Pry 效果更好)。
标签: ruby debugging if-statement logic