2010-02-03 14 views

Respuesta

7

Las cadenas de comillas simples en Ruby son más 'literales' que las cadenas entre comillas dobles; las variables no se evalúan, y la mayoría de los caracteres de escape no funcionan, con la excepción de \\ y \' para incluir barras diagonales inversas y comillas simples, respectivamente.

comillas dobles son lo que quiere:

file.write "objectclass: groupOfUniqueNames\n" 
+0

Entonces, ¿por qué realmente querría usar cadenas de comillas simples? ¿Es solo una mano corta para evitar escapar de los personajes? – Zombies

+0

También puede ser útil si no desea interpolar. Por ejemplo: ''La interpolación se ve así: # {@ variable} '', que se imprime literalmente, en oposición a' "El valor de @foo es # {@ foo}" ', donde' @ foo' se evalúa y insertado. –

+0

@Zombies La secuencia de una sola cita requiere menos trabajo por parte de Ruby. Son un poco más rápidos de usar cuando sabes que no vas a necesitar cosas como la interpolación variable. – meagar

3

Estás utilizando comillas simples. Las únicas secuencias de escape permitidas en comillas simples son \\ para \ y \' para '. Use comillas dobles y \n funcionará como se esperaba.

+0

En realidad, ni siquiera '' \\ obras. (Lo que BTW significa que no puede tener una sola cadena entre comillas que finaliza con un número impar de barras invertidas.) –

+0

Por supuesto, funciona: ''\\' ==" \\ "# => true' – sepp2k

+0

@ Jörg W Mittag: Tenga en cuenta que ''\\'. Size == 1', que es un número impar. – sepp2k

4

Los sólo dos secuencias de escape permitido en una misma cadena entre comillas son \' (para una comilla simple) y \\ (para una sola barra invertida). Si desea utilizar otras secuencias de escape, como \n (para nueva línea), debe usar una cadena con comillas dobles.

Por lo tanto, esto va a funcionar:

file.write "objectclass: groupOfUniqueNames\n" 

Aunque personalmente me basta con utilizar puts aquí, que ya suma una nueva línea:

file.puts 'objectclass: groupOfUniqueNames' 
Cuestiones relacionadas