Quando comecei com Ruby, havia alguns nomes dados a operadores que tive dificuldade em descobrir como eram nomeados ou qual era seu propósito.
Vou tentar listar alguns dos diferentes operadores e seus nomes comuns e seus usos, acho que esta será uma boa referência para iniciantes e pessoas que simplesmente esqueceram qual é o nome de uma certa combinação de caracteres que podem encontrar ao ler o código.
A lista
Hashrocket
=> #hasrocket, arrow or just arrow.
Usado em conjunto com { }
ao definir hashes (matrizes associativas ou dicionários em outras línguas).
Uso:
my_hash = { :key1 => 'my value', :key2 => 'other value' }
puts my_hash[ :key1 ]
#-> my value
Símbolo para proc
:& #symbol to proc
Isso é útil quando você deseja chamar um método em uma coleção de objetos, ele executará o método por nome após &:
em cada elemento no array / hash.
Uso:
my_array = [ 'foo', 'bar']
new_array = my_array.collect(&:reverse)
new_array.each{ |element| puts element }
#-> oof
#-> rab
Operador de nave espacial
<=> #Spaceship operator
Usado independentemente, ele retornará 1, 0 ou -1 dependendo se o valor da esquerda for maior, igual ou menor que o valor da direita.
Além do que, além do mais; o operador de nave espacial é usado junto com a mistura Enumerable, ajuda na definição de um método de comparação, que por sua vez permite que a classe mixer tenha vários métodos úteis de mixagem como ordenação, max, min, etc. Para mais informações veja o Enumerable mixin nos documentos ruby: http://ruby-doc.org/core-1.9.3/Enumerable.html
Uso:
1 <=> 0
#-> 1
1 <=> 1
#-> 0
1 <=> 2
#-> -1
Operador de quadrado em T ou curto-circuito ‘OU’
||= #t-square or short-circuit or
Usamos o operador para inicializar um valor apenas se o lado esquerdo da atribuição resultar em um valor falso (nil) ou false
; qualquer outro valor será avaliado como verdadeiro e não atribuirá o valor à direita.
Uso:
foo ||= 'bar'
puts foo
#-> bar
foo ||= 'foobar' #since foo was initialized with 'bar' on the first assignment,
#foo will be truthy ( not false or nil) and will skip
#the assignment
puts foo
#-> 'bar'
Operador de escavadeira ou deslocamento esquerdo
Este operador tem vários usos, quando usado quando o valor esquerdo é uma matriz, ele chamará o push
método e passará o lado direito como o argumento. Isso pode ser encadeado várias vezes.
Quando o lado esquerdo for uma string, ele chamará o concat
método do lado esquerdo e passará o lado direito como um argumento.
O outro uso é o deslocamento de bits, que são operações em números no nível de bits. Por exemplo tomar o seguinte número binário: 0001
representa um 1, se você mudar este espaço para a direita, torna-se a 2: 0010
.
Mude novamente e você terá 4: 0100
mais uma vez e agora terá 8:1000
Uso:
# On arrays:
foo = []
foo << 'foo'
foo << 'bar'
foo << 'fizz' << 'buzz'
foo.each { |element| puts element }
#-> foo
#-> bar
#-> fizz
#-> buzz
# On strings:
my_string = 'foo'
my_string << 'bar'
puts my_string
# -> foobar
# On numbers
1 << 0
#-> 1
1 << 1
#-> 2
1 << 2
#-> 4
1 << 3
#-> 8