A notação de porcento em Ruby

Criado em: 06/03/2013

No Ruby temos a notação de % que veio inspirada do Perl. Além do % podemos usar um caractere modificador que muda o comportamento do nosso %. Vamos ver como cada um destes funcionam.

%

Ao utilizarmos a sintaxe % temos o mesmo resultado do uso de aspas duplas, no entanto não temos a necessidade de escapar nenhuma aspas, seja simples ou duplas.

blog = "Groselhas"
p %{O #{blog} é o blog do Mauro} # => "O Groselhas é o blog do Mauro"

%q

Ao utilizarmos a sintaxe %q temos o mesmo resultado do uso de aspas simples, no entanto não temos a necessidade de escapar nenhuma aspas, seja simples ou duplas.

blog = "Groselhas"
p %q{O #{blog} é o blog do Mauro} # => "O \#{blog} é o blog do Mauro"

%Q

Utilizamos o %Q obtemos o mesmo resultado do uso de aspas duplas, assim como o %, ou seja % e %Q possuem o mesmo comportamento.

blog = "Groselhas"
p %Q{O #{blog} é o blog do Mauro} # => "O Groselhas é o blog do Mauro"

%w

Utilizamos o %w para a criação de arrays de strings, e como o %q ele não faz interpolação de strings.

blog = "Groselhas"
p %w{#{blog} Mauro Blog} # => ["\#{blog}", "Mauro", "Blog"]

%W

Com o uso do %W criamos um array de strings, e assim como o %Q podemos fazer interpolação de strings

blog = "Groselhas"
p %W{#{blog} Mauro Blog} # => ["Groselhas", "Mauro", "Blog"]

%i

Recentemente adicionado no Ruby 2.0, o %i é usado para gerarmos um array de symbols, e como você já deve esperar ele não faz interpolação de strings.

blog = "Groselhas"
p %i{#{blog} item} # => [:"\#{blog}", :item]

%I

O %I possui quase o mesmo comportamento do %i, no entanto ele faz interpolação de strings. Também adicionado no Ruby 2.0.

blog = "Groselhas"
p %I{#{blog} item} # => [:Groselhas, :item]

%r

Com o %r podemos criar uma expressão regular, e também podemos fazer interpolação de strings

blog = "Groselhas"
p %r{#{blog}.*Mauro} # => /Groselhas.*Mauro/

%s

Utilizamos o %s para a criação de um symbol, e não conseguimos fazer interpolação de strings.

blog = "Groselhas"
p %s{#{blog} item} # => :"\#{blog} item"

%x

Usamos o %x para executar comandos do sistema operacional, e ainda conseguimos fazer interpolação de strings.

option = "-l"
p %x{ls #{option}} # => total 88\n-rw-r--r--   1 mauro...

Trocando o delimitador

Em todos os nossos exemplos usamos o { para iniciar e o } para finalizar nosso comando, no entanto podemos usar qualquer um caractere que possua o seu par como os parêntesis(( e )) e o colchete([ e ]). Caso utilizemos o mesmo delimitador não é necessário escapar desde que se use o de abertura e fechamento. Também é possivel utilizar 2 caracteres iguais como delimitadores. Veja um exemplo

blog = "Groselhas"
p %Q{O #{blog} {blog do Mauro}} # => "O Groselhas {blog do Mauro}"
p %Q(O #{blog} { blog do Mauro) # => "O Groselhas { blog do Mauro"
p %Q$O #{blog} {blog do Mauro}$ # => "O Groselhas {blog do Mauro}"

Como pode ver ao trocarmos o delimitador podemos usar o { e o } livremente em nosso código.

RSpec: Crie especificações executáveis em Ruby
Aprimore as suas habilidades enquanto escreve testes com o meu livro RSpec: Crie especificações executáveis em Ruby

Comentários

Comentários powered by Disqus