启动PRY:
pry problem_12b.rb
这是我的控制台:
5: def divisors
6: return [1] if self == 1
7: primes, powers = self.prime_division.transpose
8: exponents = powers.map{|i| (0..i).to_a}
9: divisors = exponents.shift.product(*exponents).map do |powers|
10: primes.zip(powers).map{|prime, power| prime ** power}.inject(:*)
11: end
12: divisors.sort.map{|div| [div, self / div]}
=> 13: binding.pry
14: end
让我们玩这个:
28.divisors
p divisors
#[1, 7, 2, 14, 4, 28]
很酷......现在说我想执行第12行。我可以这样做:
p divisors.sort.map{|div| [div, self / div]}
#[[1, 28], [2, 14], [4, 7], [7, 4], [14, 2], [28, 1]]
我想说的是:p line(12)
(您在此处插入代码)因为这不正确并且它会爆炸。
Exception: NoMethodError: undefined method `line' for 28:Fixnum
在它爆炸之后我怎么能退一步到上面的第一个代码块。我唯一的选择是不能再次exit!
和pry problem_12b.rb
?
回顾: