217 votes

Guillemets doubles ou simples

Y a-t-il un moment précis où je devrais utiliser "" vs '' ?

J'ai utilisé des guillemets simples la plupart du temps parce que c'est plus facile à taper, mais je ne sais pas si je devrais.

par exemple get 'user/new' vs. get "user/new"

12 votes

Êtes-vous sûr qu'il s'agit d'une question de RdR, et pas seulement d'une question de Ruby ?

0 votes

Existe-t-il un guide de style pertinent permettant de choisir quand l'interpolation des chaînes de caractères n'est pas nécessaire ?

233voto

Jits Points 5595

" " vous permet d'effectuer une interpolation de chaînes de caractères, par exemple :

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

2 votes

Donc, en gros, il suffit d'utiliser des guillemets doubles tout le temps, non ?

12 votes

Non, les guillemets doubles permettent simplement l'interpolation des chaînes de caractères. Si vous ne voulez pas d'interpolation de chaînes de caractères, vous ne devez pas utiliser de guillemets doubles.

17 votes

Il n'y a aucune raison d'utiliser les guillemets doubles uniquement lorsque vous avez besoin d'une interpolation, il n'y a pas d'impact significatif sur les performances et cela vous fera juste réfléchir à ce que vous devez utiliser. Utilisez simplement des chaînes de caractères entre guillemets.

156voto

lfx_cool Points 937

À l'exception de l'interpolation, une autre différence est que la "séquence d'échappement" ne fonctionne pas avec des guillemets simples.

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

46 votes

Sauf pour l'échappement des guillemets simples eux-mêmes, par exemple 'don\'t' .

4 votes

Il s'agit d'une réponse très utile à cette question. Je n'avais jamais réalisé que les guillemets simples servaient à imprimer littéralement tout ce qui se trouvait entre les guillemets simples, à l'exception des guillemets qui doivent être échappés. Je vous remercie.

7 votes

Et les backslashs essaient aussi puts '\\' Il n'imprimera qu'une seule barre oblique. voir ici stackoverflow.com/questions/25499046/

43voto

Amokrane Chentir Points 11441

Pour répondre à votre question, vous devez utiliser "" lorsque vous voulez faire une interpolation de chaîne de caractères :

a = 2
puts "#{a}"

Sinon, utilisez des citations simples.

De plus, si vous vous demandez s'il y a une différence en termes de performances, il existe un excellent site Web de la Commission européenne. question à ce sujet sur StackOverflow.

Et si vous êtes vraiment novice en matière de RdR, je vous conseille vivement de vous procurer un bon livre sur Ruby pour apprendre les bases du langage. Cela vous aidera à comprendre ce que vous faites (et vous empêchera de penser que Rails est magique). Je recommande personnellement Le Rubyiste bien rodé .

5voto

Bryan Liu Points 31

Similaire à la réponse " \n "dans l'imprimerie, voici un autre exemple de cette différence.

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

Il semble donc que * ait été converti en caractère échappé dans les guillemets doubles, mais pas dans les guillemets simples. De plus, cela aura un impact sur la sortie lors de l'utilisation d'une expression régulière. par exemple str.gsub(/expression régulière/, ' \1 , \2 ')

-9voto

Tempus Points 22972

Dans ce cas précis, la façon dont vous l'écrivez ne fait aucune différence. Ils sont équivalents. Vous pouvez également lire d'autres guides/tutoriels sur Ruby :)

5 votes

Ils ne sont pas équivalents, car les guillemets doubles permettent d'interpréter les chaînes de caractères.

9 votes

Avez-vous lu la partie "Dans ce cas précis", avant de faire cette observation extrêmement intelligente ?

11 votes

Oui, mais sa question était quand pour utiliser des guillemets simples ou doubles.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X