如何使用pry逐步执行循环并查看迭代器的值?

时间:2016-02-10 19:00:58

标签: ruby pry

我将binding.pry插入到我的Ruby程序中,并尝试在循环的每次迭代中查看迭代器的值:

require 'pry'

def longest_palindrome s
  max_palindrome_len = 0
  for i in (0..s.length)
    binding.pry
    for j in (i..s.length)
      binding.pry
      substr = s[i..j]
      if substr == substr.reverse && substr.length > max_palindrome_len
        max_palindrome_len = substr.length
      end
    end
  end
  return max_palindrome_len
end

longest_palindrome "racer"

我希望在循环的每次迭代中查看ij的值。

我确定我在这里遗漏了一些东西,但我还没有能够从文档中弄清楚该做些什么。

1 个答案:

答案 0 :(得分:1)

您可以输入p ip j来手动检查它们。

这让我很生气,所以我暂时插入puts iputs j

不要在Ruby上使用for循环。相反,我们会使用eachuptodowntotimes,具体取决于我们的目的。此外,除非您强制代码提前退出,否则在方法结束时不需要显式return语句。

我写的代码如下:

require 'pry'

def longest_palindrome(s)
  max_palindrome_len = 0

  s.length.times do |i|
    binding.pry
    i.upto(s.length) do |j|
      binding.pry
      substr = s[i..j]
      if substr == substr.reverse && substr.length > max_palindrome_len
        max_palindrome_len = substr.length
      end
    end
  end

  max_palindrome_len
end

longest_palindrome "racer"