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:
"\n" # will be interpreted as a new line
tandis que
'\n' # will display the actual escape sequence to the user
L'interpolation avec des guillemets simples ne fonctionne pas du tout:
'#{Time.now}'
=> "\#{Time.now}" # which is not what you want..
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.