以下代码失败
world = :world
result = 'hello' + world
puts result #=> can't convert Symbol into String
以下代码有效
world = :world
result = "hello #{world}"
puts result #=> hello world
为什么?
使用ruby 1.8.7
以下代码失败
world = :world
result = 'hello' + world
puts result #=> can't convert Symbol into String
以下代码有效
world = :world
result = "hello #{world}"
puts result #=> hello world
为什么?
使用ruby 1.8.7
字符串插值是一个隐式的to_s
调用.比如说:
result = "hello #{expr}"
大致相当于:
result = "hello " + expr.to_s
正如卡里姆79所说,一个符号不是一个字符串,但符号有to_s
种方法,所以你的插值工作;使用+
进行连接的try 无效,因为没有+
的实现可以理解左侧的字符串和右侧的符号.