双引号与单引号

问题描述 投票:0回答:7

是否有特定时间我应该使用

""
''

我大部分时间都使用单引号,因为这样更容易输入,但我不确定是否应该这样做。

例如

get 'user/new'
get "user/new"

ruby string quotes double-quotes single-quotes
7个回答
238
投票

" "
允许您进行字符串插值,例如:

world_type = 'Mars'
"Hello #{world_type}"

164
投票

除了插值之外,另一个区别是“转义序列”在单引号中不起作用

puts 'a\nb' # just print a\nb 
puts "a\nb" # print a, then b at newline 

55
投票

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..

最佳实践

大多数 Ruby Linters 建议

在字符串中使用单引号文字

,并且在插值/转义序列的情况下使用双引号。


43
投票
""


a = 2 puts "#{a}"

否则请使用简单的引号。

此外,如果您想知道性能方面是否存在差异,StackOverflow 上有一个很好的

问题。

如果您对 RoR 真的很陌生,我强烈建议您选择一本像样的 Ruby 书籍来学习该语言的基础知识。它将帮助您理解您在做什么(并且不会让您认为 Rails 很神奇)。我个人推荐

The Well grounded Rubyist

.


6
投票

puts "\1" -> get special character puts '\1' -> get \1

所以看起来 * 被转换为双引号中的转义字符,但不是单引号中的转义字符。
BTW,在正则表达式中使用时会影响输出
例如。,
 str.gsub(/正则表达式/, ' , ')


5
投票

此正则表达式模式将起作用,因为在单引号内传递:

"123 ABC".match('\d') => #<MatchData "1">

此正则表达式模式将失败,因为在双引号内传递(您必须对其进行双重转义才能使其正常工作):

"123 ABC".match("\d") => nil



-10
投票

© www.soinside.com 2019 - 2024. All rights reserved.