Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/svn/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 修改属于扩展类的对象的默认返回值_Ruby On Rails_Ruby_Arrays_Class - Fatal编程技术网

Ruby on rails 修改属于扩展类的对象的默认返回值

Ruby on rails 修改属于扩展类的对象的默认返回值,ruby-on-rails,ruby,arrays,class,Ruby On Rails,Ruby,Arrays,Class,我对rails语法比较陌生。我有一个日志字符串类 class LogString < Array 这很好用。我只想写作 logs 要返回可能是日志的内容,请执行join(“|”) 所以我在这里寻找一种类似于方法log\u字符串的语法 class LogString < Array def log_string self.join( ' | ' ) end end class日志字符串

我对rails语法比较陌生。我有一个日志字符串类

class LogString < Array
这很好用。我只想写作

logs
要返回可能是日志的内容,请执行join(“|”)

所以我在这里寻找一种类似于方法log\u字符串的语法

class LogString < Array
   def log_string
      self.join( ' | ' )
   end
end
class日志字符串
但是,当我简单地编写类实例名称时,会自动调用logu字符串:logs

我如何才能做到这一点?

添加以下内容:

  def to_s
    join '|'
  end

这将在模板和一些I/O操作中起作用,其中#to#s被称为。除非您同时修改
#inspect
,否则它在irb中不起作用。(你可以让它调用你的新#to_。)

你不能只引用一个对象,让它调用对象上的一个方法,但你可以非常接近

如果您重写
to_s
方法(tostring的缩写),您将能够执行以下操作

class LogString < Array
  def to_s
     self.join ' | '
  end
end

log = LogString.new
log << "message one"
log << "message two"

puts "#{log}"
class日志字符串class LogString < Array
  def to_s
     self.join ' | '
  end
end

log = LogString.new
log << "message one"
log << "message two"

puts "#{log}"