有时如果我定义了一个变量,例如
xyz="example"
我想回访xyz
,我可以在语句/循环等中输入xyz
或#{xyz}
。
我的问题是我何时使用xyz
以及何时使用#{xyz}
?它们有何区别?
答案 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}"
(但请不要这样做,这是编写代码的一种可怕方式。对于大多数用途,坚持使用变量查找和简单函数调用应该足够了。)
在字符串(或其他插值引用)之外的任何地方,#{}
都是错误。