Expressões e atribuição

A maioria dos comandos dá (retorna) um objeto como resultado, por isso comandos são também chamados de expressões. Não é necessário usar o comando return para retornar um valor. O objeto retornado pelo método será o resultado da última expressão avaliada.

def teste
  if true
    "aie"
  else
    "erro"
  end
end

puts teste    # >> aie

O comando return pode ser usado para fazer o "retorno imediato".

Comentários são iniciados pelo caractere '#' e se estendem até o fim da linha. Há também a documentação inserida em código, que inicia com a palavra =begin no inicio de uma linha, e termina com a palavra =end no inicio de uma linha posterior. Tudo que estiver entre elas será ignorado para fins de execução do programa. Além disso, texto entre estas palavras é "oficialmente" usado para gerar a documentação do código. Atualmente, o programa rdtool é usado para este fim, e utiliza uma formatação específica.

O Rdoc é outro programa para gerar documentação em vários formatos, tentando ser mais amigável ao programador. É muito elogiado e está ganhando a preferência dos desenvolvedores, sendo, portanto, mais recomendável seu uso. Além disso, há planos para fazer com que a documentação oficial das classes padrão seja feita com o Rdoc.

O fim da linha marca o fim de uma expressão, a não ser em alguns casos em que é óbvia (para o interpretador) a continuação da expressão, ou se o caractere '\' estiver no fim da linha. Também pode ser "forçado" o fim de uma expressão antes do fim da linha, com o uso de ';'. Assim é possível especificar várias expressões/comandos em uma única linha.

a = 1; b = 2; puts a+b    # >> 3

Em geral, qualquer lugar onde seja esperado um objeto pode ter, ao invés de diretamente o objeto, uma expressão que resulte no objeto adequado.

Atribuição múltipla

Atribuição múltipla é feita quando o lado esquerdo de uma atribuição tem uma vírgula (',') após o primeiro elemento, seguida de 0 ou mais elementos também separados por ',', e é feita de acordo com as seguintes regras:

  1. se o último elemento à direita é um Array prefixado por '*', ele será "expandido";
  2. se houver apenas um elemento à direita, ele é convertido em um Array e expandido;
  3. os elementos extras à direita são descartados;
  4. aos elementos extras à esquerda, é atribuído o valor nil;
  5. assim como em argumentos de métodos, se o último elemento à esquerda for prefixado por '*', ele recebe um Array contendo seu valor correspondente seguido dos extras à direita (que, obviamente, não são descartados);
  6. se um elemento à esquerda for uma lista de elementos entre parênteses, é tratado como uma "sub-atribuição múltipla", relativa ao seu elemento correspondente à direita, que é feita seguindo estas mesmas regras;

A atribuição acontece efetivamente em paralelo (i.e. instantaneamente).

a = 1, 2, 3      # >> a=[1, 2, 3]
a, = 1, 2, 3     # >> a=1
a, b, c = 1, 2   # >> a=1, b=2, c=nil
a, b = b, a, 3   # >> a=2, b=1
a, *b = 1, 2, 3  # >> a=1, b=[2, 3]

Referências:

topo da página

<< Página Anterior | índice | Próxima Página >>
Apostilas de Ruby e RGSS

nossos tutoriais

navegue

livros recomendados