Capítulo 04

De Guru-SP

Blocos nada mais são que pedaços de código que podem ser enviados para métodos.

Blocos são delimitados por chaves ("{" e "}") ou pelas palavras "do" e "end". Eles podem receber argumentos, que são indicados no começo do código entre dois caracteres "|".

Esses são alguns exemplos de blocos válidos:

{puts "Oi!"}
{|x| puts x*x}
do
 puts "Entrando no bloco..."
 puts "Continuando..."
 puts "Vou sair agora!"
end
do |x|
 puts x+1
end

Claro, blocos são código, e código só é útil quando é utilizado. Para entender melhor o poder dos blocos, vamos a um exemplo.

Vamos analisar esse código:

5.times {|x| puts "Contando!", x}

Ele vai imprimir o seguinte na tela:

Contando!
0
Contando!
1
Contando!
2
Contando!
3
Contando!
4

Mas como isso realmente está acontecendo?

O método "times" do número 5 está sendo chamado e recebendo um bloco de código (delimitado pelas chaves "{" e "}"). O bloco vai receber do método times uma variável "x", indicada no "|x|".

Nosso método times é um iterador. Basicamente, ele vai chamando o bloco nós enviamos várias vezes, cada vez passando um número como parâmetro para o bloco. No exemplo, ele vai passar 5 números diferentes: 0, 1, 2, 3 e 4.

Então, o nosso bloco será chamado 5 vezes, recebendo os números passados pelo método times. Cada vez que o bloco for chamado, ele será executado, mostrando a mensagem "Contando!" na tela, pulando uma linha e em seguida exibindo o número que foi lhe passado.

Claro, blocos podem ser utilizados para coisas mais interessantes que isso. Por exemplo, se tivermos uma lista de números (convenientemente chamada de "numeros") e quisermos listar o quadrado desses números podemos fazer o seguinte:

numeros.each {|numero| puts numero*numero}

Aqui, nosso iterador é o método "each", que vai listar todos os números de uma lista. No caso, o código vai receber o número da lista "numeros" e imprimir o quadrado dele. Isso vai acontecer para cada elemento da lista.

Blocos são um conceito um pouco complicado de se entender no começo, mas uma pessoa não deve se intimidar. Eles são uma das principais coisas que tornam Ruby uma linguagem tão poderosa. O conceito de blocos também está bastante ligado com o de iteradores - você só conseguirá usar blocos efetivamente se entender os iteradores.




Voltar para o tutorial de Ruby, ou ir para o Capítulo 05.

Ferramentas pessoais