Em programação, Literals são notações que permitem criar valores que podem ser usados no código. Em Ruby, as literals nos permitem criar objetos dos seguintes tipos: Booleans, nil, Números, Strings, Symbols, Arrays, Hashes, Ranges, Expressões Regulares e Procs. Já a Percent String é uma forma de notação que permite criar outros tipos de objeto. Em Ruby podemos usar:
%i Array de Symbols
%i(new create edit update)
# => [:new, :create, :edit, :update]
%w Array de Strings
%w(coelho gato porco)
# => ["coelho", "gato", "porco"]
Nas notações de Arrays, para incluir um espaço em branco em algum dos elementos, será necessário adicionar um caractere \
:
%w(coelho gato\ selvagem porco)
# => ["coelho", "gato selvagem", "porco"]
%q String
%q(essa é uma frase)
# => "essa é uma frase"
%r Expressões regulares
%r((\d)(\1+)|(\d))
# => /(\d)(\1+)|(\d)/
%s Symbol
%s(method_name)
# => :method_name
%x Backtick (captura a resposta do subshell)
%x(id -u)
# => "1000\n"
Em todos os casos, no lugar dos parênteses também podemos usar colchetes [ ]
, o resultado será o mesmo.
Talvez um exemplo de uso bastante óbvio de Percent Strings seja em aplicações Rails em que temos Arrays de actions chamados em controllers ou no arquivo de rotas:
resources :users, only: [:new, :create, :show]
# pode ser substituído por
resources :users, only: %i[new create show]