Ruby

  • Categorias

  • Arquivos

Ligação e escopo

Ligação (Binding):

Ligação é uma associação entre um objeto (variável, tipo,módulo, função, etc) e seus atributos (nome, endereço, tipo, etc).

Em ruby a atribuição de um valor a uma variável funciona como uma declaração. O tipo da variável é determinado pelo valor que lhe foi atribuído, e pode ser modificado durante a execução do programa. A ligação ocorre portanto em tempo de execução, e a tipagem é dinâmica.´

Entidades que podem ser vinculadas são : valores primitivos, valores compostos, referências para variáveis, classes, modulos e métodos.

Escopo:

Ruby tem uma estrutura de bloco aninhada, ou seja:

— Declarações no nível mais externo têm escopo global (nível 1).

— Declarações dentro de um bloco interno são locais ao bloco; cada bloco está dentro de outro bloco, com um nível a mais.

O escopo (âmbito) de uma variável local em Ruby é um dos seguintes:

  • proc{…}
  • loop{…}
  • def…end
  • class…end
  • module…end
  • O programa inteiro (se não há nenhum dos itens anteriores)

Ruby implementa o escopo estático (as variáveis tem seu escopo determinado antes da execução do programa, ou seja, não é determinado durante o tempo de execução, como seria o escopo dinâmico).

Mas em Ruby todas as variáveis podem ser local, global – $, atributos de objeto (de instância) – @ (a variável é acessível somente à classe) ou atributos de classe – @@ (a variável é acessível à classe e a todas que herdarem dela). O que pode confudir na hora de determinar qual escopo a linguagem tem.

Por exemplo:

Código 1

$s = 2;

def scaled(d)

d*$s;

end

def teste()

s = 3;

scaled(3);

end

puts teste();

Código 2

$s = 2;

def scaled(d)

d*$s;

end

def teste()

$s = 3;

scaled(3);

end

puts teste();

No código 1 será impresso 6 e no código 2 será impresso 9. Nesses códigos exemplificam duas diferentes formas de acesso a uma variável, mas o escopo continua sendo estático.Não está relacionado com o TIPO de escopo, mas com o escopo em si (escopo = faixa de instruções no qual uma variável é visível). Ou seja, está relacionado com a forma de acesso a ambientes locais ou não locais.

Declarações

Uma declaração é uma frase de um programa que ao ser elaborada produz ocorrências e vínculos. Ruby suporta os principais tipos de declarações, com exceção de declarações colaterais.

definição – é uma declaração cujo único efeito é produzir associações. Como exemplo, tem-se a declaração de constantes.
Ex:
Constante = 10

declaração de tipos -uma declaração de um novo tipo cria um tipo e produz um vínculo. Como em Ruby TUDO é objeto, pode-se definir um novo tipo através de classes (TAD):
Ex:
class Foo
@foo
end

declaração de variáveis – uma declaração de variável nova cria uma variável e produz um vínculo. Como foi dito ateriormente, em Ruby, todas as variáveis podem ser local, global  ou atributos de classe. Como Ruby é dinamicamente tipada, a declaração de uma variável é feita quando se associa um valor à mesma:
Ex:
foo = Foo.new

declaração sequencial – sintaxe semelhante aos comandos seqüenciais:
Ex:
@foo; @foo2 # declaracao da variavel @foo e da variavel @foo2

obs: o ‘#’ significa início de comentário

declaração recursiva – Uma declaração recursiva usa as próprias declarações que ela produz, pode ser, por exemplo, uma declaração de tipos recursivos ou definições de funções e procedimentos recursivos.
Ex:
def fib(n)
return 1 if n <= 1
return fib(n – 1) + fib(n – 2)
end

Fonte:http://64.233.169.104/search?q=cache:Wk0WvP3VUxAJ:www.dsc.ufcg.edu.br/~franklin/disciplinas/2006-1/PLP/PROJETO_RUBY_PLP2006-1.pdf+declara%C3%A7%C3%A3o+sequencial+em+ruby&hl=pt-BR&ct=clnk&cd=1&gl=br&lr=lang_pt

Deixe um comentário