什么时候在Ruby中引用变量时必须使用#{}?

时间:2015-01-28 08:02:07

标签: ruby

有时如果我定义了一个变量,例如

xyz="example"

我想回访xyz,我可以在语句/循环等中输入xyz#{xyz}

我的问题是我何时使用xyz以及何时使用#{xyz}?它们有何区别?

1 个答案:

答案 0 :(得分:1)

#{}允许您在插值引用中使用任何Ruby表达式(不一定是变量)(双引号字符串,正则表达式......)。它将评估表达式,使用to_s方法将结果转换为字符串,然后将结果插入(“插入”)到该点的字符串中。

例如,如果您有一个字符串"Hello, apollo!",并希望将apollo替换为变量的内容,则可以说"Hello, #{name}!"

您甚至可以将整个程序放在字符串中:

"One plus two equals #{
  def last_name_by_first_name(last_name)
    People.find_by_last_name(last_name).first.first_name
  end
  find_by_last_name('Jack')
}!"

"#{a = 1} + #{b = 2} = #{a + b}"

(但请不要这样做,这是编写代码的一种可怕方式。对于大多数用途,坚持使用变量查找和简单函数调用应该足够了。)

在字符串(或其他插值引用)之外的任何地方,#{}都是错误。