Ruby – Container e Iterator – Linux

Publicado: 29 de dezembro de 2014 em Ruby on Rails

Em português iterador, é um objeto que permite a um programador examinar uma coleção ou container. Vários tipos de iteradores são frequentemente fornecidos através de uma interface de container. Apesar da interface e semântica de um determinado iterador serem fixas, iteradores são frequentemente implementados em termos de estruturas subjacentes a uma implementação de container e são muitas vezes ligados intimamente ao container para permitir a semântica operacional do iterador.

Observe que um iterador percorre e também dá acesso aos elementos de dados em um container, mas não realiza iteração (isto é, não sem alguma liberdade significativa tomada com este conceito ou com uso trivial da terminologia). Um iterador tem um comportamento semelhante a um cursor de banco de dados. Iteradores datam da linguagem de programação CLU de 1974.

Collection

É uma coleção, às vezes chamada de um recipiente (container), é simplesmente um objeto que agrupa vários elementos em uma única unidade. Coleções são usadas ​​para armazenar, recuperar, manipular e comunicar dados agregados, ou seja uma coleção é um objeto que contém outros objetos, existem outras coleções com diferentes capacidades.

Historicamente, o quadro de coleções têm sido bastante complexo, o que lhes deu uma reputação de ter uma grande curva de aprendizagem. Os exemplos mais conhecidos de frameworks de coleções são o C ++ Standard Template Library (STL). A nomenclatura das APIs e suas sintaxes podem mudar de uma linguagem de programação para outra.

Ruby - Container e Iterator

Ruby – Container e Iterator

Array e Hash

O Ruby possui dois tipos de containers, eles pertencem as classes Array e Hash. Os Arrays são ordenados, coleções indexadas por números inteiros de qualquer objeto, um Hash é uma coleção como um dicionário de chaves únicas e seus respectivos valores.

Array: http://www.ruby-doc.org/core-2.2.0/Array.html

Hash: http://www.ruby-doc.org/core-2.0/Hash.html

Exemplo:

Neste exemplo criamos uma classe para representar um item musical que contem determinadas informações de uma musica. Utilizamos um container para armazenar as musicas representando um álbum e utilizamos o iterador para navegar e imprimir o conteúdo do container.

Ruby

#!/usr/bin/env ruby
# Desenvolvimento Aberto
# Containers.rb

# Define classe
class Album
  
  # Métodos
  attr_accessor :id, :musica, :duracao
  
  # Construtor
  def initialize(id, musica, duracao)
    @id = id
    @musica = musica
    @duracao = duracao
  end

end

# Cria Array (Lista)
afd = [
  Album.new(1, "Welcome to the Jungle ", "4:34"),
  Album.new(2,"It's So Easy","3:23"),
  Album.new(3,"Nightrain","4:28"),
  Album.new(4,"Out Ta Get Me","4:24"),
  Album.new(5,"Mr. Brownstone","3:49"),
  Album.new(6,"Paradise City","6:46"),
  Album.new(7,"My Michelle","3:40"),
  Album.new(8,"Think About You","3:52"),
  Album.new(9,"Sweet Child O' Mine","3:21"),
  Album.new(10,"You're Crazy","3:17"),
  Album.new(12,"Anything Goes","3:26"),
  Album.new(12,"Rocket Queen","6:13")]

# itera lista
puts "Album - Appetite for Destruction  - GNR\n\n"

# Itera lista
afd.each do |musicas|
  # Recupera objetos
  objeto =  musicas
  # Imprime objeto
  puts String(objeto.id).ljust(5) +
              objeto.musica.ljust(40) + objeto.duracao.rjust(5)
  
end

Anúncios

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

w

Conectando a %s