2

正如我们在消息中看到的那样,在 ruby​​ 中使用单引号比双引号更快:在 ruby​​ 中使用单引号与双引号是否有性能提升?.

那么为什么每个人都使用双引号(或两者)???

一些例子 :

(我知道,不是所有人,而是大多数人。)

编辑1:插值不是原因!

在 Sinatra 中,双引号并不总是带有插值或任何特殊的东西:

it "defines HEAD request handlers with HEAD" do
4

5 回答 5

7

双引号允许您进行插值:"Number of users : #{@count_user}"

再加上看看基准,我会说充其量没关系,开销很小,而且有些基准实际上用双引号更快......

于 2012-08-01T13:54:25.900 回答
5

双引号允许字符串插值,单引号不会计算其中的任何内容,而双引号会。例如,双引号将允许您使用转义字符,而单引号则不允许!

  "he said \n hello"

将导致 2 行,而

  'he said \n hello'

将产生一个中间有 '\n' 的字符串

于 2012-08-01T13:53:18.360 回答
2

一个原因是双引号支持字符串插值,但单引号不支持。

例如:

some_var = 15
"I have #{some_var} cats"
# => "I have 15 cats"

'I have #{some_var} cats"
# => "I have \#{some_var} cats"

如果可能,我个人更喜欢单引号,因为我认为它们看起来更干净。但是字符串插值是使用双引号的一个非常重要的原因。

关于性能问题,它是如此微不足道,以至于它实际上是一个偏好问题而不是性能问题。

于 2012-08-01T13:52:09.580 回答
0

它已被回答并接受,其中一些正在重复其他人,但我的 2 美分值得。

  1. 使用双引号意味着如果您以后确实想将需要插值的内容添加到字符串中,您可以这样做而无需更改引号。
  2. 需要插值的字符串和不需要插值的字符串之间的一致性。
  3. 能够在字符串中包含所有英语,例如。"don't", "Jim's" 无需转义或更改引号。
  4. \在 \n 和 \t 等字符串中嵌入转义字符
于 2012-08-02T04:20:49.533 回答
0

我不知道您是否真的正确阅读了该线程,但@zetetic 实际上发现使用双引号会稍微快一些。尽管如此,这项测试完成了超过 100 万个任务,因此在这方面它们的速度基本相同。

这一切都归结为偏好。很多人来自无法使用单引号的语言,因此他们习惯于双引号。这都是偏好问题。

于 2012-08-01T13:54:21.650 回答