# \[Ruby\] Diferença entre ' e "

**URL:** <https://forum.casadocodigo.com.br/t/ruby-diferenca-entre-e/42>\
**Category:** Livros\
**Tags:** ruby\
**Created:** [Outubro 21, 2015, 5:11pm UTC](https://forum.casadocodigo.com.br/t/ruby-diferenca-entre-e/42 "2015-10-21T17:11:05Z")\
**Posts on this page:** 7\
**Page:** 1

<div class="post-metadata">

**Author:** ![jean.pontes](https://avatars.discourse-cdn.com/v4/letter/j/6de8d8/32.png) [@jean.pontes](https://forum.casadocodigo.com.br/u/jean.pontes)\
**Post date:** [Outubro 21, 2015, 5:11pm UTC](https://forum.casadocodigo.com.br/t/ruby-diferenca-entre-e/42/1 "2015-10-21T17:11:05Z")

</div>

Olá, estava lendo o livro de Ruby do Lucas Souza e achei muito bom.

Porém, não consegui entender direito a diferença entre aspas simples `'` e aspas duplas `"` em ruby.

Alguém consegue me ajudar?

---

<div class="post-metadata">

**Author:** ![adrianoalmeida7](https://yyz1.discourse-cdn.com/flex029/user_avatar/forum.casadocodigo.com.br/adrianoalmeida7/32/12_2.png) [@adrianoalmeida7](https://forum.casadocodigo.com.br/u/adrianoalmeida7)\
**Post date:** [Outubro 21, 2015, 5:13pm UTC](https://forum.casadocodigo.com.br/t/ruby-diferenca-entre-e/42/2 "2015-10-21T17:13:49Z")

</div>

Oi @jean.pontes, que legal que gostou do livro.

Nas strings declaradas com aspas simples você não consegue fazer interpolação, que é aquela forma de fazer uma espécie de concatenação, mas mais elegante. Por exemplo:

```
nome_completo = "Adriano #{sobrenome} de Almeida"

```

com as aspas simples você teria que fazer as clássicas concatenações com +.

---

<div class="post-metadata">

**Author:** ![lucasarruda](https://yyz1.discourse-cdn.com/flex029/user_avatar/forum.casadocodigo.com.br/lucasarruda/32/11708_2.png) [@lucasarruda](https://forum.casadocodigo.com.br/u/lucasarruda)\
**Post date:** [Outubro 29, 2015, 4:17pm UTC](https://forum.casadocodigo.com.br/t/ruby-diferenca-entre-e/42/3 "2015-10-29T16:17:57Z")

</div>

@jean.pontes  
Completando o que disse o @adrianoalmeida7,

A gente sempre tenta usar aspas simples ( ’ ). Porém quando houver uma variável junto à `string`, o Ruby vai precisar fazer _interpolação_ e portanto você vai precisar de aspas duplas ( " ).

Ex.:

```
erro = 'Falha ao criar usuário'
mensagem = 'Usuário criado com sucesso'
nome_usuario = current_user.first_name
bem_vindo = "Bem vindo, ${nome_usuario}"

```

Resumindo: **sempre tente optar por ', mas caso precise, use "**

---

<div class="post-metadata">

**Author:** ![marcosalles](https://yyz1.discourse-cdn.com/flex029/user_avatar/forum.casadocodigo.com.br/marcosalles/32/14145_2.png) [@marcosalles](https://forum.casadocodigo.com.br/u/marcosalles)\
**Post date:** [Outubro 30, 2015, 2:53pm UTC](https://forum.casadocodigo.com.br/t/ruby-diferenca-entre-e/42/4 "2015-10-30T14:53:38Z")

</div>

> @lucasarruda  
> A gente sempre tenta usar aspas simples ( ’ ) (…)

Lucas, e por que devemos sempre optar pelas aspas simples? Tem alguma diferença de uso de memória ou velocidade de processamento?

---

<div class="post-metadata">

**Author:** ![lucasarruda](https://yyz1.discourse-cdn.com/flex029/user_avatar/forum.casadocodigo.com.br/lucasarruda/32/11708_2.png) [@lucasarruda](https://forum.casadocodigo.com.br/u/lucasarruda)\
**Post date:** [Outubro 30, 2015, 3:30pm UTC](https://forum.casadocodigo.com.br/t/ruby-diferenca-entre-e/42/5 "2015-10-30T15:30:20Z")

</div>

@marcosalles  
É um boa prática, porque o Ruby sabe que não precisará fazer interpolação e vai tratar somente como `string`.  
Provavelmente vai ser bem mais rápido também (se você considerar isso 100 vezes no código).

Sempre tente simplificar as coisas quanto tiver programando porque sempre otimiza.

---

<div class="post-metadata">

**Author:** ![marcosalles](https://yyz1.discourse-cdn.com/flex029/user_avatar/forum.casadocodigo.com.br/marcosalles/32/14145_2.png) [@marcosalles](https://forum.casadocodigo.com.br/u/marcosalles)\
**Post date:** [Outubro 30, 2015, 4:09pm UTC](https://forum.casadocodigo.com.br/t/ruby-diferenca-entre-e/42/6 "2015-10-30T16:09:59Z")

</div>

Essa otimização acontece porque, no geral, aplicações em ruby são interpretadas e não compiladas, certo? No caso de se utilizar um compilador como o Rubinius, não faria realmente diferença.

---

<div class="post-metadata">

**Author:** ![smartium](https://yyz1.discourse-cdn.com/flex029/user_avatar/forum.casadocodigo.com.br/smartium/32/13682_2.png) [@smartium](https://forum.casadocodigo.com.br/u/smartium)\
**Post date:** [Janeiro 4, 2016, 8:52pm UTC](https://forum.casadocodigo.com.br/t/ruby-diferenca-entre-e/42/7 "2016-01-04T20:52:55Z")

</div>

Olá!

Uma questão interessante também é quando se deseja colocar aspas dentro de aspas sem precisar de escape ( \ ).

Por exemplo:

`puts 'Hello "World"'`  
retorna `Hello "World"`

`puts "Hello 'World'"`  
retorna `Hello 'World'`
