Qual é a diferença entre cadeias simples e duplas?

18

Qual é a diferença entre cadeias simples e duplas?

Existe uma maneira de expandir uma variável dentro de uma string ou elas sempre precisam ser unidas como: 'Hello, ' . s:name . '!'

Tom Hale
fonte

Respostas:

23

A única diferença entre as cadeias simples e dupla está relacionada à barra invertida. Para exibir caracteres especiais como nova linha, sinos, guias, etc, você precisa usar aspas duplas -> "\n".

Dentro de uma sequência de aspas simples, '\'ela própria => '\n'é uma sequência de dois caracteres (uma barra invertida + n). Nas aspas duplas, você deve dobrá-lo -> "\\", o que os torna impraticáveis ​​para definir regexes.

Em relação à expansão de strings, você tem algumas opções:

  • 'Hello, ' . s:name . '!'
  • join(['Hello, ', s:name, '!'], '') - que nunca usamos
  • printf('Hello %s!', s:name)
  • lh#fmt#printf('Hello %1!', s:name)- do lh-vim-lib, quando não queremos saber sobre tipos e quando não precisamos formatar campos, mas quando queremos usar formatos como: 'Hello %1. How are you doing %1 this %2'.
Luc Hermitte
fonte
É possível incluir 'dentro de uma string de aspas simples?
Tom Hale
2
@TomHale. Sim, ele é. Dobrar. -> 'foo''bar', ou use ambos os tipos de citações:'foo'."'".'bar'
Luc Hermitte 28/09