(補充1)Ruby中的p puts print對比

2022-09-02 01:09:11 字數 1804 閱讀 9858

p

和puts

是ruby

中特別常用的方法,很多童鞋可能認為它們是差不多的,使用的時候也不加注意,但是仔細考究起來,它們是有明顯差別的。

先舉乙個例子:

class foo

def

inspect

"foo from inspect"

end

def to_s

"foo from to_s"

endend

foo

=foo.new

p foo

puts foo

p"p: <#

>"

puts"puts: <#

>"

這段**的輸出是:

相當於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

方法。再舉乙個例子:

小結:

比較專案

puts

print

p 換行符

末尾新增換行符

末尾不加換行符

末尾新增換行符

非字串物件的輸出

呼叫該物件的

to_s

方法呼叫該物件的

to_s

方法通過

inspect

方法將物件轉換成字串

學習筆記1 Ruby模組 module

我們使用模組的的主要目的是用來組織 模組化 有點類似命名空間,但卻有很大的不同 一 建立和使用模組 用module關鍵字來定義模組 module沒有例項,我們使用時把module混合到類中來使用,我們也可以這麼理解,把module裡的內容拷貝乙份放到類裡,成為類的一部分 我們可以把模組放到乙個單獨的...

補充 redis的ruby安裝

如果使用yum install安裝ruby會預設安裝1.8版本的。而1.8不滿足redis的3.0集群環境,所以需要安裝更高版本的ruby。這種方式安裝和解除安裝都非常麻煩 2.通過rvm管理安裝 第一步 安裝curl 1 yum install curl第二步 安裝rvm gpg keyserve...

Ruby 與ruby的初次接觸(1)

一 ruby的使用 1 ruby安裝 以下主要針對是windows的 主要是在官網上找到 在安裝的時候務必注意 勾選 add ruby executables to your path 不然你只能自己手動加路徑了 二 第乙個ruby的 很尷尬的是我的ruby最終還是在mac上安裝了,windows用...