Uma das coisas mais legais de começar a programar em Ruby é ir percebendo, com o passar do tempo, as particularidades da linguagem. Uma de suas características mais interessantes, a meu ver, é a quantidade de pequenas features que servem para simplificar a vida do programador, ou mesmo para diminuir a quantidade de código necessário para fazer coisas simples.
Um exemplo bastante conhecido do que eu mencionei é a sintaxe de hash introduzida no Ruby 1.9. É um detalhe pequeno, mas que torna uma coisa corriqueira como a criação de um hash tendo símbolos como chaves algo mais prático. Outra feature bastante conhecida é a notação de porcentagem (“%”).
O exemplo mais conhecido dessa notação é o %w
, utilizado para a criação de arrays de palavras. Onde isso:
É equivalente a isso:
Porém, além deste exemplo, existem outros delimitadores para facilitar nossa vida em diferentes. São os seguintes:
%q
O primeiro, e mais simples, é o %q
, utilizado para criar strings sem interpolação. Sua contraparte maiúscula %Q
, que pode ser substituída por %
, aceita interpolação.
%w
É a já mencionada notação para criação de arrays de palavras. Assim como no caso anterior, apenas a versão maiúscula %W
aceita interpolação.
%r
Esta notação é utilizada para a criação de expressões regulares. Algo importante a ser dito é que, ao contrário dos casos anteriores, esta notação aceita interpolação e não possui versão maiúscula.
%s
Esta notação é utilizada para criar símbolos. Ela também não possui contraparte maiúscula, porém não aceita interpolação.
%i
Esta expressão literal foi implementada no Ruby 2.0 e é bem similar ao %w
, porém cria um array de símbolos. Do mesmo modo que o %w
, possui uma versão maiúscula que aceita interpolação.
%x
A última expressão da lista é a %x
, que cria um comando de shell. Tal qual o %r
, este delimitador não possui versão maiúscula e aceita interpolação.
Delimitadores
Note que em cada exemplo utilizei um tipo de caractere diferente para delimitar a expressão. Fiz isso propositadamente para demonstrar que a esta notação aceita qualquer caractere que não seja alfanumérico ou multibyte como delimitador. Se para abrir a expressão se usa (
, [
, {
ou <
o delimitador para fechar a expressão será o caractere de fechamento correspondente ()
, ]
, }
e >
respectivamente). Caso seja usado algum outro caractere válido (como nos casos que usei |
e !
), então o delimitador final será o mesmo caractere que iniciou a expressão.
Achou o post útil? Achou algum erro no conteúdo? Quer falar sobre a Vida, o Universo e Tudo Mais? Deixe seu feedback nos comentários e até o próximo post.