首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >为什么一个Ruby对象同时具有to_s和test方法,而这些方法看起来都相同呢?

为什么一个Ruby对象同时具有to_s和test方法,而这些方法看起来都相同呢?
EN

Stack Overflow用户
提问于 2018-03-27 08:12:01
回答 2查看 0关注 0票数 0

为什么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
G
Graph : 0
Graph : 0

为什么Ruby有两个功能做同样的事情?to_s和inspect之间有什么区别?

EN

Stack Overflow用户

发布于 2018-03-27 17:47:54

inspect是一种默认情况下告诉你类名与实例的方法object_id,并列出实例的实例变量。

printputs正如你所知道的那样,使用对象to_s方法的值STDOUT

如Ruby的文档所示,Object#to_s返回表示对象的字符串 。

printputs除了puts自动附加换行符之外,它们是相同的,而print不是。

票数 0
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/-100004316

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档