Revisão de blocos
Passe blocos para métodos.
Revisão de blocos é uma aula grátis de Ruby Academy no CoddyKit. Esta é a aula 1 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Ruby Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Ruby Academy inclui 4 aulas no total.
Passando blocos para métodos
Um bloco é um trecho de código que você entrega a um método. Muitos métodos do Ruby, como each, aceitam um bloco e o executam por você. Os blocos são a base do estilo expressivo do Ruby.
[1, 2, 3].each do |n|
puts n * 10
endDuas sintaxes de bloco
Use do ... end para blocos com várias linhas e chaves { } para instruções curtas de uma só linha. Eles se comportam da mesma maneira.
[1, 2, 3].each { |n| puts n }Parâmetros de bloco
Os nomes entre as barras verticais | | são os parâmetros do bloco. O método decide o que passar para eles.
{ a: 1, b: 2 }.each do |key, value|
puts "#{key} = #{value}"
endyield chama o bloco
Dentro de um método, yield executa qualquer bloco que tenha sido passado. Você não precisa declarar o bloco na lista de parâmetros para usar yield.
def twice
yield
yield
end
twice { puts "Hi" }yield com argumentos
Passe valores para o bloco por meio de yield. Eles são atribuídos aos parâmetros do bloco.
def greet_each(names)
names.each { |n| yield n }
end
greet_each(["Ann", "Bo"]) { |name| puts "Hello #{name}" }block_given?
Chamar yield sem um bloco gera um erro. Primeiro, verifique com block_given? para tornar o bloco opcional.
def maybe
if block_given?
yield
else
puts "No block provided"
end
end
maybe
maybe { puts "Block ran" }Blocos retornam valores
Um bloco é avaliado como sua última expressão. Métodos como map coletam esses valores retornados em um novo vetor.
squares = [1, 2, 3, 4].map { |n| n * n }
p squaresO valor de yield
O próprio yield retorna o valor do bloco, portanto um método pode transformar a entrada por meio de um bloco fornecido por quem chama.
def transform(x)
yield x
end
result = transform(5) { |n| n + 100 }
puts resultCapturando um bloco com &
Prefixe o último parâmetro com & para capturar o bloco como um objeto Proc que você pode armazenar ou encaminhar.
def run(&block)
block.call
end
run { puts "Called via block.call" }Parâmetros numerados
O Ruby moderno permite omitir o nome de um único parâmetro de bloco usando _1 (ou it no Ruby 3.4+). Isso é útil para blocos pequenos.
[10, 20, 30].each { puts _1 }Juntando tudo
Os blocos permitem que os métodos aceitem comportamento:
do...endou{ }fornecem um bloco.yieldo executa;block_given?verifica se ele foi fornecido.&blocko transforma em um objeto reutilizável.
def repeat(times)
return unless block_given?
times.times { |i| yield i }
end
repeat(3) { |i| puts "Step #{i}" }Verificação rápida
Teste sua compreensão sobre blocos.
Recapitulação
Você revisou os blocos:
- Os blocos passam comportamento aos métodos por meio de
do...endou{ }. yieldexecuta o bloco e retorna seu valor.block_given?torna os blocos opcionais.&blockcaptura um bloco como um Proc.
def wrap
puts "<<"
yield
puts ">>"
end
wrap { puts "content" }Perguntas Frequentes
A aula “Revisão de blocos” é grátis?
Sim — o texto completo de “Revisão de blocos” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Ruby Academy, atualize para CoddyKit PRO. O curso de Ruby Academy inclui 4 aulas no total.
O que vou aprender em “Revisão de blocos”?
Passe blocos para métodos. Você pratica Ruby Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar Ruby Academy?
Nenhuma experiência prévia é necessária. Ruby Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 1 de 4.
Quanto tempo leva a aula “Revisão de blocos”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de Ruby Academy?
Sim. Cada aula de Ruby Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- Revisão de blocos
- Procs
- Lambdas
- Closures e escopo