Why ruby object has two to_s and inspect methods that do the same thing? Or, so it seems.
- by prosseek
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>