为了账号安全,请及时绑定邮箱和手机立即绑定

p vs放入Ruby

p vs放入Ruby

猛跑小猪 2019-10-25 09:27:02
p和putsRuby 之间有什么区别吗?
查看完整描述

3 回答

?
尚方宝剑之说

TA贡献1788条经验 获得超4个赞

p foo打印foo.inspect跟着一个新行,即,它打印的值inspect代替to_s,这是更适合的调试(因为可以例如告诉之间的差1"1"并且"2\b1",它可以不打印时不inspect)。


查看完整回答
反对 回复 2019-10-25
?
MMTTMM

TA贡献1869条经验 获得超4个赞

同样重要的是要注意puts对已to_s定义的类的“反应” p不会。例如:


class T

   def initialize(i)

      @i = i

   end

   def to_s

      @i.to_s

   end

end


t = T.new 42

puts t   => 42

p t      => #<T:0xb7ecc8b0 @i=42>

这直接来自.inspect调用,但是在实践中并不明显。


查看完整回答
反对 回复 2019-10-25
?
长风秋雁

TA贡献1757条经验 获得超7个赞

除了上述答案外,控制台输出中还有细微的差别-即是否存在逗号/引号引起来-这可能是有用的:


p "+++++"

>> "+++++"


puts "====="

>> =====

如果您想使用它们的近亲print创建一个简单的进度栏,那么我发现这很有用:


array = [lots of objects to be processed]

array.size

>> 20

这给出了100%的进度条:


puts "*" * array.size

>> ********************

这会在每次迭代中添加一个增量*:


array.each do |obj|

   print "*"

   obj.some_long_executing_process

end


# This increments nicely to give the dev some indication of progress / time until completion

>> ******


查看完整回答
反对 回复 2019-10-25
  • 3 回答
  • 0 关注
  • 447 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信