Petit à petit, sortie de ce que j'ai appris grâce au Codewar récemment lancé
You probably know the "like" system from Facebook and other pages. People can "like" blog posts, pictures or other items. We want to create the text that should be displayed next to such an item. Implement a function likes :: [String] -> String, which must take in input array, containing the names of people who like an item. It must return the display text as shown in the examples:
Implémentez la méthode likes qui reçoit un tableau comme argument afin qu'il puisse afficher qui l'a aimé à partir des informations contenues dans le tableau.
likes [] -- must be "no one likes this"
likes ["Peter"] -- must be "Peter likes this"
likes ["Jacob", "Alex"] -- must be "Jacob and Alex like this"
likes ["Max", "John", "Mark"] -- must be "Max, John and Mark like this"
likes ["Alex", "Jacob", "Mark", "Max"] -- must be "Alex, Jacob and 2 others like this"
def likes(names)
return "no one likes this" if names.empty?
if names.count == 1
"#{names[0]} likes this"
elsif names.count == 2
names.each { |n| }.join(" and ") << " like this"
elsif names.count == 3
"#{names[0]}, #{names[1]} and #{names[2]} like this"
else
others_count = names.count -2
"#{names[0]}, #{names[1]} and #{others_count} others like this"
end
end
Je pense que c'est un moyen simple de modifier les informations renvoyées en fonction de la longueur du tableau.
Je tiens à souligner que j'ai pu écrire une déclaration complète en une ligne pour la première fois de ma vie, telle que return" personne n'aime ça "si names.empty?
! !! !! !! !!
Très facile à voir. .. ..
Si vous le faites dans plusieurs conditions, case ~ when
est plus facile à lire et est meilleur.
def likes(names)
case names.size
when 0
"no one likes this"
when 1
"#{names[0]} likes this"
when 2
"#{names[0]} and #{names[1]} like this"
when 3
"#{names[0]}, #{names[1]} and #{names[2]} like this"
else
"#{names[0]}, #{names[1]} and #{names.size - 2} others like this"
end
end
Recommended Posts