Operadores, nomes, aliases e usos do Ruby

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 pushmé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 concatmé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:
0001representa 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