字符串与内嵌表达式

在我们的示例代码中,最后一行是相当有趣的。

  1. puts( "Hello #{name}" )

这里的 name 变量被嵌入到字符串(String)本身中。这是通过将变量放置于两个花括号中并在花括号前面加一个 # 字符实现,也就是 #{} 。这种嵌入式表达式仅限于使用双引号分隔的字符串中起作用。如果你尝试在单引号分隔的字符串中使用它,该变量将不会被执行(解释),恰恰显示的将会是字符串 ‘Hello #{name}’

不仅仅只有变量可以嵌入到双引号分隔的字符串中。你也可以嵌入非打印(转义)字符,例如换行符 \n 和制表符 \t 。你甚至也可以嵌入程序代码和数学表达式。让我们假设你拥有一个方法 showname ,它的返回值为字符串 ‘Fred’。

下面这个字符串在执行过程中将会调用 showname 方法,因此,最终结果将会显示为 “Hello Fred”:

  1. puts "Hello #{showname}"

看你是否能弄清楚下面这段程序将会显示什么结果:

3string_eval.rb
  1. puts("\n\t#{(1 + 2) * 3}\nGoodbye")

现在运行一下 3string_eval.rb 程序看看你对了吗。