亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

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 關注
  • 508 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號