重写Ruby中的to_s方法是不是很糟糕?

fiv*_*six 46 ruby

我一直在试验,发现我喜欢重新定义Object的to_s方法.

这是一个坏主意还是好的做法?

Mag*_*nar 61

不,你应该随意覆盖to_s- 没有不良副作用.只要您的新to_s内容比内置信息更丰富(不是那里的高标准),您就清楚了.

并且它们有助于使您的测试失败更好 - 有时候是很多 - 这从来都不是坏事.去吧!

  • 我甚至会说超越'to_s`更有意义的东西是*好*练习! (11认同)

DGM*_*DGM 10

to_s在Rails项目中一直覆盖:

   def to_s
     first_name + " " + last_name
   end

这样在视图中显示对象更容易:

<%= @person %>


saw*_*awa 7

这样做可能很棘手,因为有时候,inspect方法只是调用to_s,如果改变了,你可能会遇到调试问题.如果您认为to_s当您需要通过依赖的方法查看结果时,更改可能会让您感到困惑inspect,例如p,那么您可能需要同时重新定义inspect该类.只要你确定你在做什么,你可能想要这样做.