相关疑难解决方法(0)

为什么这个Ruby对象既有to_s又检查看起来做同样事情的方法?

为什么这个Ruby对象to_sinspect看起来做同样事情的方法?

p方法调用inspect并放置/打印to_s用于表示对象的调用.

如果我跑

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
Run Code Online (Sandbox Code Playgroud)

我明白了

G
Graph : 0
Graph : 0
Run Code Online (Sandbox Code Playgroud)
  • 那么,为什么Ruby有两个函数做同样的事情呢?to_s和之间有什么区别inspect
  • 这有什么之间的区别puts,print以及p

如果我注释掉 …

ruby printing object

62
推荐指数
5
解决办法
4万
查看次数

标签 统计

object ×1

printing ×1

ruby ×1