在 Ruby 1.8 中,这段代码的执行结果是这样的:
def f a
  a.class
end
f (1 + 2).to_s # => String
"#{f (1 + 2).to_s}" # => "Fixnum" 
注意最后一行,完全相同的代码,写进内联字符串结果都完全变了,是因为结合的优先级发生了改变。写在外面的时候,(1 + 2)与to_s率先结合得到"3",然后再和f结合得到String,是因为f和后面的部分有个空格所致。
而写在内联字符串中的时候,f (1 + 2)竟然率先结合了,返回结果Fixnum再和to_s结合变成了"Fixnum"。
这个坑直接导致绝不能在 Ruby 1.8 上使用 FastEruby,因为 FastEruby 就是利用了内联字符串的特性来执行模版代码的,但这个 Bug 导致结果可能和预期完全不同。