¿Cuál es la diferencia entre cadenas de comillas simples y dobles?

18

¿Cuál es la diferencia entre cadenas de comillas simples y dobles?

¿Hay alguna manera de obtener una variable expandida dentro de una cadena, o siempre necesitan unirse como: 'Hello, ' . s:name . '!'

Tom Hale
fuente

Respuestas:

23

La única diferencia entre una cadena entre comillas simples y dobles está relacionada con la barra invertida. Para mostrar caracteres especiales como nueva línea, campanas, pestañas, etc., debe usar comillas dobles -> "\n".

Dentro de una cadena entre comillas simples, '\'es en sí => '\n'es una cadena de dos caracteres (una barra invertida + n). Entre comillas dobles, debe duplicarlo -> "\\", lo que los hace poco prácticos para definir expresiones regulares.

Con respecto a la expansión de cadenas, tiene algunas opciones:

  • 'Hello, ' . s:name . '!'
  • join(['Hello, ', s:name, '!'], '') - que nunca usamos
  • printf('Hello %s!', s:name)
  • lh#fmt#printf('Hello %1!', s:name)- de lh-vim-lib, cuando no queremos saber sobre los tipos, y cuando no necesitamos formatear campos, pero cuando queremos usar formatos como: 'Hello %1. How are you doing %1 this %2'.
Luc Hermitte
fuente
¿Es posible incluir 'dentro de una cadena entre comillas simples?
Tom Hale
2
@TomHale. Sí lo es. Doblarlo -> 'foo''bar', o use ambos tipos de citas:'foo'."'".'bar'
Luc Hermitte