我在 irb 中执行了以下操作,并且还在 pry 中尝试了相同的代码
class Number < Struct.new(:value)
end
class Number
def to_s
value.to_s
end
def inspect
"<<#{self}>>"
end
end
现在,如果我这样做 Number.new(2)
, 它正确返回 <<2>>
在 irb 中,但在 pry 中它错误地返回 #<struct Number value=2>
.为什么会这样?
谢谢
最佳答案
我对 pry
不是很熟悉(直到现在我才用过它),但是你的问题的明显答案是:因为 pry
不是在你的对象上调用 inspect
。您可以手动调用它,它会按预期工作:
Number.new(2).inspect
# => "<<2>>"
我的问题是:为什么 pry
不调用 inspect
,它在做什么?看着the code ,它看起来像是调用了 pretty_inspect
。可能有更聪明的解决方法,但我想到的最简单的事情就是将 pretty_inspect
别名为 inspect
以获取 Number
:
class Number
alias_method :pretty_inspect, :inspect
end
Number.new(2)
# => <<2>>
关于ruby - irb 和 pry 中相同 ruby 代码的冲突输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17013948/