Ruby中的p和puts的使用區(qū)別淺析
p 和 puts 是 Ruby 中特別常用的方法,很多童鞋可能認(rèn)為它們是差不多的,使用的時(shí)候也不加注意,但是仔細(xì)考究起來(lái),它們是有明顯差別的。
先舉一個(gè)例子
class Foo
def inspect
"foo from inspect"
end
def to_s
"foo from to_s"
end
end
foo = Foo.new
p foo
puts foo
p "p: <#{foo}>"
puts "p: <#{foo}>"
這段代碼的輸出是
foo from inspect
foo from to_s
p: <foo from to_s>
puts: <foo from to_s>
p obj 相當(dāng)于 puts obj.inspect,而 puts obj 相當(dāng)于 puts obj.to_s, 使用的方便是明顯區(qū)別的,p 是使用 obj 的 inspect 方法,而 puts 是 to_s 方法。
為什么會(huì)這樣呢?這個(gè)我想可以從 to_s 和 inspect 的區(qū)別說(shuō)起,to_s 是對(duì)象的字符串表示, 是 puts 和雙引號(hào)字符使用的方法。inspect 是對(duì)象狀態(tài)的表示,通用用于 debug 中。 Object 中的定義了 to_s 和 inspect 方法,默認(rèn)都是返回對(duì)象的類(lèi)名和地址。
所以p 和 puts主要是用途的不同,p 是作為 debug 輸出,而 puts 作為對(duì)象的字符串表示輸出。
另外值得一提的是,在 irb console 中,命令行中表達(dá)式求值,使用的是 p 對(duì)象的 inspect 方法。另外,通常 debug 輸出命令,也是使用對(duì)象的 inspect 方法。
相關(guān)文章
Ruby語(yǔ)言建立Web服務(wù)器的過(guò)程詳解
這次選擇的Web服務(wù)器是Nginx,Nginx非常適合處理靜態(tài)資源,如圖片、CSS和JS文件,通過(guò)減輕應(yīng)用服務(wù)器的負(fù)擔(dān),Nginx使得Ruby?on?Rails應(yīng)用能夠更高效地運(yùn)行,這篇文章主要介紹了Ruby語(yǔ)言建立Web服務(wù)器,需要的朋友可以參考下2024-06-06
Ruby實(shí)現(xiàn)生產(chǎn)者和消費(fèi)者代碼分享
這篇文章主要介紹了Ruby實(shí)現(xiàn)生產(chǎn)者和消費(fèi)者代碼分享,本文直接給出實(shí)現(xiàn)代碼,需要的朋友可以參考下2015-05-05
設(shè)計(jì)模式中的觀察者模式在Ruby編程中的運(yùn)用實(shí)例解析
這篇文章主要介紹了設(shè)計(jì)模式中的觀察者模式在Ruby編程中的運(yùn)用實(shí)例解析,觀察者模式中主張?jiān)O(shè)立觀察者對(duì)象來(lái)降低對(duì)象之間的耦合,需要的朋友可以參考下2016-04-04
使用Ruby實(shí)現(xiàn)簡(jiǎn)單的事物驅(qū)動(dòng)的web應(yīng)用的教程
這篇文章主要介紹了使用Ruby實(shí)現(xiàn)簡(jiǎn)單的事物驅(qū)動(dòng)的web應(yīng)用的教程,本文來(lái)自于IBM官方技術(shù)文檔,需要的朋友可以參考下2015-04-04
Ruby設(shè)計(jì)模式編程中對(duì)外觀模式的應(yīng)用實(shí)例分析
這篇文章主要介紹了Ruby設(shè)計(jì)模式編程中對(duì)外觀模式的應(yīng)用實(shí)例分析,外觀模式在Ruby on Rails開(kāi)發(fā)項(xiàng)目中也經(jīng)常被用到,需要的朋友可以參考下2016-03-03

