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

Aide-mémoire

Les blocs Ruby ont deux syntaxes :

Les accolades { ... } pour les blocs d'une seule ligne :

[1, 2, 3].map { |n| n * 2 }  # [2, 4, 6]

do...end pour les blocs multi-lignes :

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

Les deux formes retournent la dernière expression du bloc (utilisée par des méthodes comme map).

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