2

正如问题所问,它只是调用to_s嵌入表达式的返回值吗?

像这样?

"1, 2, #{1 + 2}" == "1, 2, " + 3.to_s

还是这里有更多的事情发生?

4

2 回答 2

6

是的,它调用to_s表达式的结果。尝试一下。

:001> class Monkey
:002>   def to_s
:003>     "monkey"
:004>     end
:005>   end
 => nil 
:006> m = Monkey.new
 => monkey
:007> "I am a #{m}"
 => "I am a monkey" 
于 2012-08-14T15:43:03.377 回答
2

它实际上只是一个占位符,“嘿,这里有一些 ruby​​ 代码需要评估并转换为字符串。” 如果您完全熟悉 C 风格的语言,那么它与以下内容几乎相同:

printf("1, 2, %d", 1+2);
于 2012-08-14T15:43:15.273 回答