Ruby - Iteradores

Os iteradores nada mais são do que métodos suportados por coleções . Os objetos que armazenam um grupo de membros de dados são chamados de coleções. Em Ruby, arrays e hashes podem ser chamados de coleções.

Os iteradores retornam todos os elementos de uma coleção, um após o outro. Estaremos discutindo dois iteradores aqui, each e collect . Vamos examinar isso em detalhes.

Ruby cada Iterator

Cada iterador retorna todos os elementos de uma matriz ou hash.

Sintaxe

collection.each do |variable|
   code
end

Executa código para cada elemento da coleção . Aqui, a coleção pode ser um array ou um hash ruby.

Exemplo

#!/usr/bin/ruby

ary = [1,2,3,4,5]
ary.each do |i|
   puts i
end

Isso produzirá o seguinte resultado -

1
2
3
4
5

Você sempre associa cada iterador a um bloco. Ele retorna cada valor da matriz, um por um, para o bloco. O valor é armazenado na variáveli e então exibido na tela.

Ruby collect Iterator

O iterador collect retorna todos os elementos de uma coleção.

Sintaxe

collection = collection.collect

O método de coleta nem sempre precisa estar associado a um bloco. O método collect retorna a coleção inteira, independentemente de ser uma matriz ou um hash.

Exemplo

#!/usr/bin/ruby

a = [1,2,3,4,5]
b = Array.new
b = a.collect
puts b

Isso produzirá o seguinte resultado -

1
2
3
4
5

NOTE- O método de coleta não é a maneira correta de copiar entre matrizes. Existe outro método chamado clone , que deve ser usado para copiar um array em outro array.

Normalmente, você usa o método collect quando deseja fazer algo com cada um dos valores para obter a nova matriz. Por exemplo, este código produz uma matriz b contendo 10 vezes cada valor em a .

#!/usr/bin/ruby

a = [1,2,3,4,5]
b = a.collect{|x| 10*x}
puts b

Isso produzirá o seguinte resultado -

10
20
30
40
50