Nach und nach wird das ausgegeben, was ich durch den kürzlich gestarteten Codewar gelernt habe
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:
Implementieren Sie die Likes-Methode, die ein Array als Argument empfängt, damit anhand der im Array enthaltenen Informationen angezeigt werden kann, wem es gefallen hat.
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
Ich denke, es ist eine einfache Möglichkeit, die zurückgegebenen Informationen abhängig von der Länge des Arrays zu ändern. Ich möchte betonen, dass ich zum ersten Mal in meinem Leben eine einzeilige vollständige if-Anweisung schreiben konnte, wie zum Beispiel "return", niemand mag das ", wenn names.empty?"! !! !! !! !!
Sehr leicht zu sehen. .. .. Wenn Sie dies unter mehreren Bedingungen tun, ist "case ~ when" leichter zu lesen und besser.
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