修改属于扩展类的对象的默认返回值
我对rails语法比较陌生。 我有一个LogString类
class LogString < Array
我用它做了以下几点
logs = LogString.new logs.push 'this happened' logs.push 'that happened'
哪个工作正常。 我希望能够只写
logs
返回什么是logs.join(’|’)
所以我在这里寻找类似log_string方法的语法
class LogString < Array def log_string self.join( ' | ' ) end end
但是当我简单地编写类实例名称时会自动调用log_string:logs
我怎样才能做到这一点?
你不能只引用一个对象并让它在对象上调用一个方法,但你可以非常接近。
如果你重写to_s
方法(“to string”的缩写),你将能够做类似……
class LogString < Array def to_s self.join ' | ' end end log = LogString.new log << "message one" log << "message two" puts "#{log}"
添加这个:
def to_s join '|' end
这将在模板和一些调用#to_s的I / O操作中起作用。 除非你也修改#inspect
否则它不能用于irb。 (你可以让它调用你的新#to_s。)