p和puts是Ruby中最常用的方法。許多同學可能會認為它們是相同的,而且它們不會被注意使用,但是仔細研究后,它們會明顯不同,武林技術頻道小編和大家分享淺析Ruby中的p和puts的使用區別。
先舉一個例子
?
??? def to_s
????? "foo from to_s"
??? end
? end
? foo = Foo.new
? p foo
? puts foo
? p "p: <#{foo}>"
? puts "p: <#{foo}>"
?
這段代碼的輸出是
?
p obj 相當于 puts obj.inspect,而 puts obj 相當于 puts obj.to_s, 使用的方便是明顯區別的,p 是使用 obj 的 inspect 方法,而 puts 是 to_s 方法。
為什么會這樣呢?這個我想可以從 to_s 和 inspect 的區別說起,to_s 是對象的字符串表示, 是 puts 和雙引號字符使用的方法。inspect 是對象狀態的表示,通用用于 debug 中。 Object 中的定義了 to_s 和 inspect 方法,默認都是返回對象的類名和地址。
所以p 和 puts主要是用途的不同,p 是作為 debug 輸出,而 puts 作為對象的字符串表示輸出。
另外值得一提的是,在 irb console 中,命令行中表達式求值,使用的是 p 對象的 inspect 方法。另外,通常 debug 輸出命令,也是使用對象的 inspect 方法。
以上就是關于淺析Ruby中的p和puts的使用區別,如果你還想了解更多技術頻道的信息,你可以來關注武林技術頻道網!
新聞熱點
疑難解答
圖片精選