Série Ruby #1 – Varíaveis não inicializadas

November 3, 2009 at 2:01 am | In Programação, Ruby/Rails | 2 Comments

Varíaveis não inicializadas

cplx

Olá esse será o primeiro post de uma série que pretendo fazer falando sobre Ruby(A Linguagem)
Tentarei manter em posts pequenos com exemplos de código ou não,  não terá uma ordem do tipo: básico – intermediário – avançado, irei postando conforme eu achar melhor, ou se alguem vier a ler também gostaria de ouvir comentários sobre assuntos que poderiam serem abordados nos posts.

Para começar irei falar um pouco sobre “Varíaveis Não Inicializadas”. Então chega de bate papo e vamos ao post.

Se você já programa em alguma linguagem digamos assim mais conhecida como Java ou C sempre após a declaração de uma varíavel é recomendado que você à inicialize antes de fazer seu uso, uma das razões para se fazer isso é que pode acontecer de o local(na memória(1.a)) onde tal varíavel foi alocada já tenha sido usada por outra váriavel e posivelmente pode conter algum tipo de LIXO, então é uma boa prática inicializa-las.

1.a)

Básicamente falando a memória é vista pelo processador como uma tabela cada “entrada” desta tabela pode guardar um byte e cada entrada é referenciada pela sua posicão.

1 Byte é um conjunto de 8 bits pode representar um número de ate 255(na base 10).

Veja mais sobre essa matemática aqui.

Então no Ruby  em linhas gerais você sempre deve atribuir algum valor antes que de fato usar tal varíavel, mas como vamos ver existem alguns tipos de varíaveis no Ruby que não necessariamente precisam ser inicializadas.

Vejamos os tipos de váriaveis presentes no Ruby.

 - Varíaveis de Classe.
 - Varíaveis de instância.
 - Varíaveis globais.
 - Varíavies locais.

Varíaveis de Classe.

Sempre devem ter um valor atribuido antes de serem usadas, caso você à utilize sem inicializar irá receber um NameError, Como isso:

 class Class_Variable
puts @@var
 end

NameError: uninitialized class variable @@var in Class_Variable


Varíavies de Instância

Quando você tentar usar um varíiavel de instância sem ela ter sido devidamente inicializada o Ruby irá retornar um Nil, veja:

 def instance_variable
puts @name
 end

instance_variable

=> Nil
<pre>

Veja passando a opção -W para o comando Ruby em linha de comando, ele irá dar um aviso que você possue a varíavel não inicializada:

ruby -W teste.rb
teste.rb:2: warning: instance variable @x not initialized
nil

DICA: Sempre use a opção -W para testar seus código maiores, assim você pode verificar de forma fácil a presença desse tipo de coisa.


Varíaveis Globais.

Para esse tipo de varíavel vale a mesma regra que das de instância.

Varíaveis Locais.

Aqui temos que ter cuidado, em todos os outros tipos de varíaveis no Ruby temos um caractere de pontuação servindo como prefixo, isso quer dizer que as varíaveis locais se parecem com uma chamada de método, caso o Ruby “veja” uma atribuição para tal varíavel ele irá saber que se trata de uma varíavel e não de uma invocação de método, caso ele não ver, ele irá invocar o método, e caso o método não exista temos um NameError.

Por Exemplo se simplesmente fizermos isso:

 a
 NameError: undefined local variable or method `a' for main:Object
 from (irb):1
<pre>

Viram?

Então, a varíavel passa a existir apartir do momento em que ela recebe uma atribuição, e não necessita que a atribuição seja de fato executada, veja um exemplo:

 >> a = 0.0 if false
 => nil
 >> puts a
 nil

Bom pessoal é isso por hoje, espero que alguem leia isso :) .

Referencia: Livro – “A linguagem de Programação Ruby” – David Flanagan & Yukihiro Matsumoto.

Até Mais Pessoa e Orbrigado.

Blog at WordPress.com. | Theme: Pool by Borja Fernandez.
Entries and comments feeds.