JT's Blog

Do the right things and do the things right.

Ruby Object Inspect / To_s

| Comments

記錄 Object #to_s#inspect 的比較

Ruby Doc

inspect: 預設回傳物件類別名稱、object_id和所有變數值

to_s: 預設回傳物件類別名稱、object_id

實驗

建立 class Item

1
2
3
4
5
6
7
class Item
 def initialize(name)
  @name=name
 end
end

item = Item.new(100)

使用 #to_s#inspect

1
2
puts item.inspect # <Item:0x007fc74b01bf20 @name=100>
puts item.to_s    # <Item:0x007fc74b01bf20>

如果用 p, print, puts 印出 object 結果是什麼呢?

1
2
3
p     item # <Item:0x007fc74b01bf20 @name=100>
print item # <Item:0x007fc74b01bf20>
puts  item # <Item:0x007fc74b01bf20>

p 印出 Object#inspect 並回傳值

print, puts 印出 Object#to_s

nil

注意 nil 是另外一種結果

1
2
nil.to_s    # => ""
nil.inspect # => "nil"

使用

  • 瞭解整個物件的內容,包含 instance variables 就使用 #inspect (debug 用?)
  • 單純只要產生字串,就使用 #to_s

Comments