Answers:
除插值外,另一个区别是“转义序列”不适用于单引号
puts 'a\nb' # just print a\nb
puts "a\nb" # print a, then b at newline
'don\'t'
。
puts '\\'
它只会打印单个斜杠。看到这里stackoverflow.com/questions/25499046/…–
要回答您的问题,您必须""
在要进行字符串插值时使用:
a = 2
puts "#{a}"
否则,请使用简单的引号。
另外,如果您想了解性能是否存在差异,那么在StackOverflow上还有一个很好的问题。
而且,如果您真的是RoR的新手,我敦促您拿起一本不错的Ruby书来学习该语言的基础知识。它将帮助您了解自己在做什么(并使您避免认为Rails是魔术)。我个人推荐The Well扎根的Rubyist。
在Ruby中,单''
引号和双引号之间的区别在于""
对字符串求值的内容。
最初,我想澄清一下,以字符串的字面形式,单引号或双引号之间的任何内容都将被评估为字符串对象,这是Ruby String类的实例。
因此,'stackoverflow'
和"stackoverflow"
两者都将评估String类的实例与根本没有区别。
字符串的两种文字形式(单引号或双引号)之间的本质区别在于,双引号允许转义序列,而单引号不允许!
由单引号创建的字符串文字不支持字符串插值,也不会转义序列。
一个很好的例子是:
"\n" # will be interpreted as a new line
而
'\n' # will display the actual escape sequence to the user
用单引号进行插值根本不起作用:
'#{Time.now}'
=> "\#{Time.now}" # which is not what you want..
由于大部分红宝石棉短绒的建议使用单引号的文字为你的字符串,并走在插/转义序列的情况下,双重的。
单引号的字符串不处理ASCII转义码(\ n,\ t等),并且双引号不对字符串进行内插,而双引号则同时进行。
转义代码示例:
2.4.0 :004 > puts 'Hello \n World'
Hello \n World
2.4.0 :005 > puts "Hello \n World"
Hello
World
插值示例:
2.4.0 :008 > age=27
=> 27
2.4.0 :009 > puts 'Age: #{age}'
Age: #{age}
2.4.0 :009 > puts "Age: #{age}"
Age: 27