我对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
我该怎么做?
答案 0 :(得分:2)
你不能只引用一个对象并让它在对象上调用一个方法,但你可以非常接近。
如果您覆盖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}"
答案 1 :(得分:0)
添加:
def to_s
join '|'
end
这将在模板和一些调用#to_s的I / O操作中起作用。除非您同时修改#inspect
,否则它不会在irb中有效。 (你可以让它调用你的新#to_s。)