Je suis vraiment nouveau à Ruby et je suis en train de comprendre s'il y a un temps spécifique quand 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'
vsget "user/new"
Réponses:
" "
vous permet de faire une interpolation de chaîne, par exemple:la source
à l'exception de l'interpolation, une autre différence est que la 'séquence d'échappement' ne fonctionne pas en guillemet simple
la source
'don\'t'
.puts '\\'
Elle n'imprimera qu'une seule barre oblique. voir ici stackoverflow.com/questions/25499046/…Pour répondre à votre question, vous devez utiliser
""
lorsque vous souhaitez effectuer une interpolation de chaîne:Sinon, utilisez des guillemets simples.
Aussi, si vous vous demandez s'il y a une différence en termes de performances, il y a une excellente question à ce sujet sur StackOverflow.
Et si vous êtes vraiment nouveau sur RoR, je vous exhorte à vous procurer un livre Ruby décent pour apprendre les bases de la langue. Cela vous aidera à comprendre ce que vous faites (et vous empêchera de penser que Rails est magique). Je recommande personnellement The Well Grounded Rubyist .
la source
Il y a une différence entre les
''
guillemets simples et doubles""
dans Ruby en termes de ce qui doit être évalué dans une chaîne.Au départ, je voudrais préciser que, sous la forme littérale d'une chaîne, tout ce qui se trouve entre des guillemets simples ou doubles est évalué comme un objet chaîne, qui est une instance de la classe Ruby String.
Par conséquent,
'stackoverflow'
et les"stackoverflow"
deux évalueront les instances de la classe String sans aucune différence .La différence
La différence essentielle entre les deux formes littérales de chaînes (guillemets simples ou doubles) est que les guillemets doubles permettent des séquences d'échappement alors que les guillemets simples ne le font pas!
Un littéral de chaîne créé par des guillemets simples ne prend pas en charge l' interpollation de chaînes et n'échappe pas les séquences.
Un bon exemple est:
tandis que
L'interpolation avec des guillemets simples ne fonctionne pas du tout:
Meilleur entrainement
Comme la plupart des Ruby Linters suggèrent d' utiliser des littéraux de guillemets simples pour vos chaînes et optez pour les doubles dans le cas des séquences d'interpolation / d'échappement.
la source
Exemple de code d'échappement:
Exemple d'interpolation:
la source
Semblable à la réponse "\ n" en impression, voici un autre cas de différence
ressemble donc à * a été converti en caractère échappé entre guillemets doubles, mais pas entre guillemets simples. BTW, cela aura un impact sur la sortie lors de l'utilisation dans une expression régulière, par exemple, str.gsub (/ expression régulière /, '\ 1, \ 2')
la source
Une autre raison pour laquelle vous voudriez utiliser des guillemets simples est lorsque vous passez un modèle d'expression régulière sous forme de chaîne:
Ce modèle regex fonctionnera car il est passé entre guillemets simples:
Ce modèle regex échouera car il est passé entre guillemets (vous devrez le double-échapper pour le faire fonctionner):
la source
Dans ce cas précis, la manière dont vous l'écrivez ne fait aucune différence. Ils sont équivalents. En outre, vous voudrez peut-être lire d'autres guides / tutoriels Ruby :)
la source