Souza Lucas - Ruby: Aprenda a programar na linguagem mais divertida стр 16.

Шрифт
Фон

O código tornou-se obsoleto, se não existirem testes de unidade que validem este

comportamentos, provavelmente ele seria observado somente em produção quando

algum cliente usasse o sistema.

A dica é simples aqui, se a variável de instância é privada, mesmo que a lingua-

gem lhe permita burlar essa característica, não faça, resolva o problema de outra

maneira. Certamente existirá algum método na interface pública do seu objeto que

faça por você a alteração da variável de uma forma segura e correta.

45

Capítulo 4

Estruturas de dados

Ruby possui três tipos de estruturas de dados que veremos com detalhes neste ca-

pítulo. Cada uma destas estruturas possui suas qualidades e defeitos, que vamos

explorar daqui em diante.

4.1

Trabalhe com Arrays

Arrays em Ruby são coleções indexadas, ou seja, guardam objetos em uma determi-

nada ordem e disponibilizam métodos que permitem acessar objetos destas coleções

através do seu índice. Diferente do que acontece com a linguagem

C ou Java, onde

precisamos definir arrays com uma quantidade máxima de objetos, em Ruby os ar-

rays não precisam ter seu tamanho pré definido, eles crescem conforme a necessi-

dade.

Existem várias formas de definir um Array em Ruby, sendo que a mais simples

é utilizando []:

numeros = [1, 2, 3]

4.1. Trabalhe com Arrays

Casa do Código

puts numeros.class # => Array

Criamos um objeto do tipo Array utilizando dois colchetes e separando os vá-

rios elementos do Array com a vírgula. Para acessar os elementos de um Array,

utilizamos o método [indice] que recebe como argumento a posição do elemento

que desejamos acessar, lembrando que em Ruby os índices começam em 0:

numeros = [1, 2, 3]

puts numeros[0] # => 1

puts numeros[1] # => 2

puts numeros[2] # => 3

Quando precisamos acessar o primeiro ou o último elemento podemos fazê-lo

através de métodos ( first e last) da classe Array:

numeros = [1, 2, 3]

puts numeros.first # => 1

puts numeros.last # => 3

Como Ruby é uma linguagem com tipagem dinâmica, podemos adicionar ob-

jetos (adicionar novos elementos em um array se dá através do método <<, bem

parecido com um append, que adicionará o novo elemento no final do Array) de

qualquer tipo dentro de um mesmo Array:

numeros = [1, 2, 3]

numeros << "ola"

puts numeros # [1, 2, 3, "ola"]

# => 1, 2, 3, "ola"

O problema de adicionar qualquer tipo de objeto dentro de um Array, é que

muitas vezes não sabemos qual o objeto que estamos lidando. Por exemplo, vamos

definir um método que recebe um Array como argumento, busca pelo primeiro

elemento, o multiplica por 2 e por fim imprime o resultado na tela:

def multiplica_primeiro_elemento_por_dois(numeros)

puts 2 * numeros.first

end

multiplica_primeiro_elemento_por_dois [1, 2, 3] # 2

multiplica_primeiro_elemento_por_dois ["abc", 2, 3]

# => TypeError: String can't be coerced into Fixnum

48

Casa do Código

Capítulo 4. Estruturas de dados

Veremos que existem vantagens na tipagem dinâmica das estruturas de dados

em Ruby nos próximos capítulos.

A criação de array de strings

Para criar um Array de strings, a sintaxe utilizada pode ser a mesma que usamos

para criar um array com outros tipos de elementos:

palavras = ['ola', 'mundo']

p palavras # => ["ola", "mundo"]

Existe uma sintaxe mais simples para criar um array de palavras:

palavras = %w{ola mundo}

p palavras # => ["ola", "mundo"]

A vantagem de usar o %w{} é poder separar as palavras que compões o Array

utilizando espaço e não vírgula, assim poluindo pouco o código. Podemos utilizar

também o %W{}, que permite a interpolação de valores nas palavras que compõe o

array:

nome = "Lucas"

palavras = %W{ola #{nome}}

p palavras # ["ola", "Lucas"]

4.2

Guardando nosso livros

Aproveitando que agora conhecemos um pouco de uma estrutura de dados Ruby,

vamos guardar as instâncias dos objetos Livro que criamos dentro dela.

biblioteca = []

teste_e_design = Livro.new "Mauricio Aniche", "123454", 247, 70.5

web_design_responsivo = Livro.new "Tárcio Zemel", "452565", 189, 67.9

biblioteca << teste_e_design

biblioteca << web_design_responsivo

puts biblioteca

# => Autor: Mauricio Aniche, Isbn: 123454, Páginas: 247

# => Autor: Tárcio Zemel, Isbn : 452565, Páginas: 321

49

4.2. Guardando nosso livros

Casa do Código

Hoje, decidimos que vamos guardar os objetos dentro de um Array, mas futura-

mente podemos descobrir outra estrutura que funcione melhor, seja mais rápida ou

forneça vantagens que o Array não oferece. Se optarmos por essa mudança, teremos

que procurar todos os lugares que instanciam objetos do tipo Livro, guardando-os

dentro de um array, e adaptar o código para a maneira da nova estrutura.

Para nos protegermos desse problema, podemos isolar o código que faz essa atri-

buição em um único ponto, que será invocado em outras partes do código. Assim,

alteramos em um só lugar e o sistema inteiro está modificado. Essa conceito chama-

se encapsulamento.

Vamos isolar este comportamento de guardar livros

dentro de um array, em

Ваша оценка очень важна

0
Шрифт
Фон

Помогите Вашим друзьям узнать о библиотеке