Menu
Coddy logo textTech

do..end vs Accolades

Fait partie de la section Logique et Flux du Journey Ruby de Coddy. Leçon 16 sur 56.

Ruby vous offre deux façons d'écrire un bloc. Elles signifient la même chose, mais chacune a un cas d'utilisation privilégié.

do...end est utilisé pour les blocs multi-lignes :

[1, 2, 3].each do |n|
  doubled = n * 2
  puts "#{n} -> #{doubled}"
end

Les accolades { ... } sont utilisées pour les blocs sur une seule ligne, courts, sous forme d'expression :

[1, 2, 3].each { |n| puts n * 2 }

Les deux ont une priorité légèrement différente, mais la règle dont les apprenants ont besoin est celle du style : des accolades pour les instructions sur une seule ligne, do...end pour le multi-ligne.

Les deux formes peuvent retourner une valeur. La dernière expression du bloc est ce qui est renvoyé aux méthodes comme map :

[1, 2, 3].map { |n| n * 10 }    # [10, 20, 30]
[1, 2, 3].map do |n|
  n * 10
end                              # [10, 20, 30]
challenge icon

Défi

Facile

Lisez une liste d'entiers séparés par des virgules depuis l'entrée. Affichez deux lignes :

  1. Chaque nombre doublé, joint avec , . Utilisez la forme avec accolades de map.
  2. La chaîne "<n> squared is <n*n>" pour chaque nombre, un par ligne. Utilisez la forme do...end de each.

Pour l'entrée 1,2,3, la sortie est :

2, 4, 6
1 squared is 1
2 squared is 4
3 squared is 9

Essayez vous-même

numbers = gets.chomp.split(",").map(&:to_i)

# TODO: ligne 1, doublée, forme avec accolades de map, jointe avec ", "
# TODO: lignes 2..n, carrés, forme do...end de each
quiz iconTestez-vous

Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.

Toutes les leçons de Logique et Flux

Entraînez-vous par vous-même : Compilateur Ruby en ligne