Je fais actuellement des exercices de https://launchschool.com/books/ruby/read/variables#exercises et rencontrez ce problème.
Ecrivez un programme appelé age.rb qui demande à un utilisateur quel âge il a, puis lui dit quel âge il aura dans 10, 20, 30 et 40 ans. Voici la sortie pour quelqu'un de 20 ans.
Au lieu d'écrire plusieurs fois, je veux écrire seulement trois ou quatre lignes de code, mais ma méthode ne fonctionne pas. Pourriez-vous s'il vous plaît vérifier? Merci!
ages = [30,40, 50, 60]
puts {In #{year} years you will be: #{age} age.}```
age = gets.chomp.to_i puts "In 10 years you will be:" puts age + 10 puts "In 20 years you will be:" puts age + 20 puts "In 30 years you will be:" puts age + 30 puts "In 40 years you will be:" puts age + 40
4 Réponses :
Vous pouvez tout imprimer comme ceci:
years = [10, 20, 30, 40]
years.each do |year|
"In #{year} years you will be: #{age + year}"
end
Vous pouvez encapsuler la logique de mise dans une méthode
def ageOld(current_age)
years = [10, 20, 30, 40]
years.each do |year|
puts "In #{year} years you will be: #{current_age + year}"
end
end
age = gets.chomp.to_i
ageOld(age)
Vous pouvez essayer ceci.
def cal_age(current_age)
years = [30,40, 50, 60]
years.map {|i| puts "In #{i} years you will be: #{current_age + i} age." }
end
Quelle serait la raison de toujours renvoyer [nil, nil, nil, nil] à partir de cette méthode? (Le vote négatif n'est pas le mien car il imprime toujours ce qui était attendu.)
met renvoie nil et comme j'ai utilisé map ici, il renvoie le tableau de nil
Je comprends ce que met renvoie. J'ai fait remarquer que vous avez abusé de map pour une itération simple, il devrait y avoir each à la place.
Je n'ai aucune idée. Le seul problème avec ce code est une mauvaise utilisation de map AFAICT.
Juste par curiosité:
[10, 20, 30, 40].tap do |shift|
age = gets.chomp.to_i
shift.each do |years|
puts "In #{years} years you will be: #{age + years}"
end
end