Série Ruby #1 – Varíaveis não inicializadas
November 3, 2009 at 2:01 am | In Programação, Ruby/Rails | 2 CommentsVaríaveis não inicializadas

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.