ruby string syntax

ruby - Citas dobles versus simples



string syntax (7)

Una cadena entrecomillada no procesa los códigos de escape ASCII, y no interpola la cadena, mientras que la doble cita hace ambas cosas.

Ejemplo de código de escape:

2.4.0 :004 > puts ''Hello/nWorld'' Hello/nWorld 2.4.0 :005 > puts "Hello/nWorld" Hello World

Ejemplo de interpolación

2.4.0 :008 > age=27 => 27 2.4.0 :009 > puts ''Age: #{age}'' Age: #{age} 2.4.0 :009 > puts "Age: #{age}" Age: 27

Soy nuevo para Ruby y estoy tratando de entender si hay un momento específico en el que debería usar "" vs '''' .

He estado usando comillas simples la mayor parte del tiempo porque es más fácil escribir, pero no estoy seguro de si debería hacerlo.

por ejemplo, get ''user/new'' frente a get "user/new"


En este caso específico, no importa cómo lo escribes. Ellos son equivalentes. Además, es posible que desee leer más guías / tutoriales de Ruby :)


Existe una diferencia entre '''' comillas simples y dobles "" en Ruby en términos de lo que se evalúa en una cadena.

Inicialmente, me gustaría aclarar que en la forma literal de una cadena lo que sea entre comillas simples o dobles se evalúa como un objeto de cadena, que es una instancia de la clase Ruby String.

Por lo tanto, '''' y "" evaluarán las instancias de la clase String sin ninguna diferencia .

La diferencia

La diferencia esencial entre las dos formas literales de cadenas (comillas simples o dobles) es que las comillas dobles permiten secuencias de escape, mientras que las comillas simples no lo hacen.

Un literal de cadena creado por comillas simples no admite la interpollación de cadenas y no escapa a las secuencias.

Un buen ejemplo es:

"/n" # will be interpreted as a new line

mientras

''/n'' # will display the actual escape sequence to the user

Interpolar con comillas simples no funciona en absoluto:

''#{Time.now}'' => "/#{Time.now}" # which is not what you want..

Mejores prácticas

Como la mayoría de los Ruby Linters sugieren usar literales de comilla simple para tus cadenas e ir por las dobles en el caso de las secuencias de interpolación / escape.


Para responder a su pregunta, debe usar "" cuando quiera hacer una interpolación de cadenas:

a = 2 puts "#{a}"

Use citas simples de lo contrario.

Además, si se pregunta si existe una diferencia en términos de rendimiento, hay una pregunta excelente acerca de esto en .

Y si eres realmente nuevo en RoR, te insto a que tomes un libro de Ruby decente para aprender los conceptos básicos del idioma. Te ayudará a entender lo que estás haciendo (y te impedirá pensar que Rails es mágico). Yo personalmente recomiendo The Rubyist bien fundamentado .


Similar a la respuesta "/ n" en la impresión, el siguiente es otro caso de la diferencia

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

así que parece que * se convirtió en carácter escapado entre comillas dobles, pero no entre comillas simples. Por cierto, impactará la salida cuando se usa en expresión regular, por ejemplo, str.gsub (/ expresión regular /, ''/ 1, / 2'')


excepto la interpolación, otra diferencia es que ''secuencia de escape'' no funciona en comillas simples

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


" " permite hacer una interpolación de cadenas, por ejemplo:

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