如何使用 pry 单步执行循环并查看迭代器的值?
How to step through a loop with pry and view the value of an iterator?
我将 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"
我想在循环中的每次迭代中查看 i
和 j
的值。
我确定我在这里遗漏了一些东西,但我无法从文档中找出要做什么。
您可以键入 p i
和 p j
来手动检查它们。
虽然这会让我发疯,所以我会暂时插入 puts i
和 puts j
。
不要将 for
循环与 Ruby 一起使用。相反,我们使用 each
或 upto
、downto
或 times
,具体取决于我们的目的。此外,除非您强制代码提前退出,否则在方法末尾不需要显式 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"
我将 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"
我想在循环中的每次迭代中查看 i
和 j
的值。
我确定我在这里遗漏了一些东西,但我无法从文档中找出要做什么。
您可以键入 p i
和 p j
来手动检查它们。
虽然这会让我发疯,所以我会暂时插入 puts i
和 puts j
。
不要将 for
循环与 Ruby 一起使用。相反,我们使用 each
或 upto
、downto
或 times
,具体取决于我们的目的。此外,除非您强制代码提前退出,否则在方法末尾不需要显式 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"