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}"
endLes 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]Défi
FacileLisez une liste d'entiers séparés par des virgules depuis l'entrée. Affichez deux lignes :
- Chaque nombre doublé, joint avec
,. Utilisez la forme avec accolades demap. - La chaîne
"<n> squared is <n*n>"pour chaque nombre, un par ligne. Utilisez la formedo...enddeeach.
Pour l'entrée 1,2,3, la sortie est :
2, 4, 6
1 squared is 1
2 squared is 4
3 squared is 9Essayez 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
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
1Les chaînes de caractères en profondeur
Aperçu des méthodes de chaînesInterpolation de chaînesParcourir les chaînesSplit et JoinRécapitulatif - String Weaver4Blocs, Procs & Lambdas
Qu'est-ce qu'un bloc ?do..end vs AccoladesLe mot-clé yieldParamètres de blocProcs et LambdasRécapitulatif - Itérateur personnalisé7Hashes - Partie 2
Hash.new avec des valeurs par défautItérer sur les HashesHashes imbriquésFusion et transformationRécapitulatif - Compteur de fréquence10Projet - Dossiers étudiants
Présentation du projetAjouter un étudiant2Intervalles
Qu'est-ce qu'un intervalle ?Méthodes d'intervalleLes intervalles dans Case / WhenRécapitulatif - Pratique des intervalles5La puissance d'Enumerable
Select et RejectChaîner MapReduce / Injectcount, all?, any?, none?group_by et partitionsort_by, min_by, max_byRécapitulatif - Data PipelineEntraînez-vous par vous-même : Compilateur Ruby en ligne