有没有办法用方法覆盖Ruby的默认字符串插值行为?

Jef*_*Lee 4 ruby

当在双引号字符串插值中引用对象时,既to_s不会也不会to_str被调用.例如:

# UPDATE: This example actually works as expected. See update below.
class Foo
  def to_s
   'foo'
  end

  def to_str
    to_s
  end
end

"#{Foo.new}" # result: "#<Foo:0x007fb115c512a0>"
Run Code Online (Sandbox Code Playgroud)

我不认为我可以做些什么来赚取回报价值"foo"

UPDATE

道歉,但这段代码确实有效.另一段代码中的错误.

Phr*_*ogz 5

您看到这些结果的Ruby版本是什么?这对我使用Ruby 1.9.2和1.8.6正常工作:

class Foo
  def to_s
   'hi mom'
  end
end

puts "#{Foo.new}"
#=> hi mom
Run Code Online (Sandbox Code Playgroud)