ruby字符串中的#{}实际上是做什么的?

时间:2012-08-14 15:31:36

标签: ruby string

正如问题所问,是否只是在嵌入式表达式的返回值上调用to_s

喜欢这个吗?

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

或者还有更多的事情发生在这里吗?

2 个答案:

答案 0 :(得分: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" 

答案 1 :(得分:2)

这真的只是一个占位符说,“嘿,这里我们有一些需要评估的ruby代码并转换为字符串。”如果您熟悉C风格的语言,它几乎与:

相同
printf("1, 2, %d", 1+2);