Why ruby object has two to_s and inspect methods that do the same thing? Or, so it seems.
Posted
by prosseek
on Stack Overflow
See other posts from Stack Overflow
or by prosseek
Published on 2010-04-12T21:41:06Z
Indexed on
2010/04/12
22:02 UTC
Read the original article
Hit count: 463
The p calls inspect, and puts/print calls to_s for representing its object.
If I run
class Graph
def initialize
@nodeArray = Array.new
@wireArray = Array.new
end
def to_s # called with print / puts
"Graph : #{@nodeArray.size}"
end
def inspect # called with p
"G"
end
end
if __FILE__ == $0
gr = Graph.new
p gr
print gr
puts gr
end
I get
G Graph : 0Graph : 0
- Then, why does ruby has two functions do the same thing? What makes the difference between to_s and inspect?
- And what's the difference between puts/print/p?
If I comment out the to_s or inspect function, I get as follows.
#<Graph:0x100124b88>#<Graph:0x100124b88>
© Stack Overflow or respective owner