Série Ruby #2 – Atribuições

November 6, 2009 at 2:36 pm | In Ruby/Rails | Leave a Comment

No último post foi visto como o Ruby trabalha com os 5 tipos de varíaveis, falamos bastante sobre atribuições também, então neste post iremos falar um pouco mais sobre isso.

Atribuições

Uma atribuição é um expressão que pode especificar um ou mais de um valor para uma dada varíavel ou mais corretamente
de um Ivalue.
IValue é um termo para indicar o que aparece antes de um operador de atribuição, por exemplo:

x = 10

Na expressão acima x é um ivalue e um rvalue que é 10.
No Ruby existem três tipos de expressões de atribuição, a mais simples vista acima e outras duas que vamos ver agora.

As atribuições abreviadas que são expressões que além de atualizar um valor ainda aplicam alguma matemática sobre o ivalue
certamente você já fez isso:

x *= 10

Também tempos as atribuições paralelas que são aquelas em que um rvalue é atribuido a n ivalues, por exemplo:

x, y, z = 10

Também é possivel tem n ivalues e n rvalues, assim:

x, y, z = 2, 4, 6

Aqui x recebe 2, t recebe 4 e z recebe 6.
O que um ivalue recebe como conteúdo é o valor ou array de valores que é à ela atribuido. Um operador de atribuição é righ-assiciative ou seja, a atribuição é avalidada da direita para a esquerda, com isso podemos fazer isso:

a = b = 4

Aqui b recebe 4 e a também recebe 4.

Efeitos colaterias – Idempotent.

Como vimos uma atribuição muda o estado de uma varíavel isso muda o estado de um programa por exemplo,
existem várias expressões que não tem efeitos colaterais algum, pois toda a vez que são avalidas irão retornar o mesmo valor ,por exemplo:

Dado um método para calcular a raiz quadrada de um número inteiro e positivo:

	def raiz(x)
	   return x * x
	end

Esse método não tem efeitos colaterais, esse tipo de expressão é chamado de idempotent, você pode
avaliar o método acima n vezes e ele sempre irá retornar o mesmo valor, já a seguinte expressão irá mudar a cada vez que for executada:

x += 1

Você pode ler mais sobre isso em: http://en.wikipedia.org/wiki/Idempotence
Bom pessoal, esse foi o segundo post da série Ruby. Até mais e Obrigado.

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