Pourquoi cette Ruby objet à la fois to_s et d'inspecter les méthodes qui semblent faire la même chose?

Pourquoi cette Ruby objet à la fois un to_s et inspect méthodes qui semblent faire la même chose?

La p les appels de méthode inspect et met/imprimer appels to_s pour la représentation de l'objet.

Si je lance

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

- Je obtenir

G
Graph : 0
Graph : 0
  • Alors, pourquoi ne Rubis ont deux fonctions faire la même chose? Quelle est la différence entre to_s et inspect?
  • Et quelle est la différence entre puts, print, et p?

Si j'commentaire la to_s ou inspect fonction, je reçois comme suit.

#<Graph:0x100124b88>
#<Graph:0x100124b88>
InformationsquelleAutor prosseek | 2010-04-12