Menu
Coddy logo textTech

Parâmetros de Bloco

Parte da seção Lógica e Fluxo do Journey de Ruby da Coddy — lição 18 de 56.

As variáveis entre os pipes, |x|, |x, y|, são os parâmetros de bloco. Elas nomeiam os valores que o método passa para o bloco.

Alguns métodos passam um valor, outros passam vários. each passa um elemento por vez:

[10, 20, 30].each { |n| puts n }

each_with_index passa dois, o elemento e seu índice:

["a", "b", "c"].each_with_index do |letter, i|
  puts "#{i}: #{letter}"
end
# 0: a
# 1: b
# 2: c

Ao iterar um hash, os parâmetros do bloco são chave e valor:

{ a: 1, b: 2 }.each do |key, value|
  puts "#{key} = #{value}"
end

O número e a ordem dos parâmetros de bloco dependem do que o método produz. Em caso de dúvida, consulte a documentação ou tente um parâmetro e veja o que acontece.

challenge icon

Desafio

Fácil

O hash scores é fornecido. Itere sobre ele com each_with_index em sua forma to_a para que você tenha acesso tanto ao par (name, points) quanto à sua posição. Imprima uma linha por entrada neste formato:

<rank>. <name> - <points>

Onde rank começa em 1 (não 0).

Para o hash padrão, a saída é:

1. Alice - 90
2. Bob - 85
3. Cara - 78

Folha de consulta

Parâmetros de bloco são nomeados entre pipes |...| e recebem valores fornecidos pelo método:

# each – one parameter
[10, 20, 30].each { |n| puts n }

# each_with_index – element and index
["a", "b", "c"].each_with_index do |letter, i|
  puts "#{i}: #{letter}"
end

# hash each – key and value
{ a: 1, b: 2 }.each do |key, value|
  puts "#{key} = #{value}"
end

hash.to_a converte um hash em um array de pares [key, value], útil com each_with_index:

{ a: 1, b: 2 }.to_a.each_with_index do |(key, value), i|
  puts "#{i}: #{key} = #{value}"
end

Experimente você mesmo

scores = { "Alice" => 90, "Bob" => 85, "Cara" => 78 }

# TODO: imprimir "<rank>. <name> - <points>" para cada entrada, o rank começa em 1
quiz iconTeste seus conhecimentos

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