O que é um Bloco?
Parte da seção Lógica e Fluxo do Journey de Ruby da Coddy — lição 15 de 56.
Você já vem escrevendo blocos. Toda vez que você escreveu each do |x| ... end, a parte entre do e end era um bloco: um pedaço de código passado para um método.
[1, 2, 3].each do |n|
puts n * 2
endAqui, each é um método no array, e do |n| ... end é o bloco. each executa o bloco uma vez para cada elemento, passando-o como n.
Blocos não são objetos separados que você armazena em variáveis, eles estão vinculados diretamente à chamada do método. Um método recebe um bloco ou não, e a maioria dos métodos de iteração (each, map, select, times) são projetados para receber um.
3.times do |i|
puts "hi #{i}"
endChamar um método sem o seu bloco altera o que ele faz. [1,2,3].map sem nenhum bloco retorna um enumerador em vez de um array transformado, então o bloco faz parte do que o método significa.
Desafio
InicianteLeia um número inteiro n da entrada. Use o método times com um bloco para imprimir a mensagem Iteration <i> para cada valor de i de 0 até n - 1.
Para a entrada 3, a saída é:
Iteration 0
Iteration 1
Iteration 2Folha de consulta
Um bloco é um pedaço de código passado para um método entre do |param| ... end:
[1, 2, 3].each do |n|
puts n * 2
endUse times para repetir um bloco n vezes, com i indo de 0 a n - 1:
3.times do |i|
puts "hi #{i}"
endExperimente você mesmo
n = gets.to_i
# TODO: use n.times com um bloco para imprimir cada iteração
Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.
Todas as lições de Lógica e Fluxo
1Strings a Fundo
Visão Geral de Métodos de StringInterpolação de StringsIterando sobre StringsSplit e JoinRecapitulação - String Weaver4Blocos, Procs e Lambdas
O que é um Bloco?do..end vs ChavesA palavra-chave yieldParâmetros de BlocoProcs e LambdasRecapitulação - Iterador Customizado7Hashes Parte 2
Hash.new com Valores PadrãoIterando em HashesHashes AninhadosMesclando e TransformandoRecapitulação - Contador de Frequência10Projeto - Registros de Alunos
Visão Geral do ProjetoAdicionar Aluno2Intervalos
O que é um Intervalo?Métodos de IntervaloIntervalos em Case / WhenRecapitulação - Prática com Intervalos5O Poder do Enumerable
Select e RejectEncadeando o MapReduce / Injectcount, all?, any?, none?group_by e partitionsort_by, min_by, max_byRecapitulação - Data Pipeline