Betrachten funktioniert die folgenden Arrays und Bereich:Warum Rand innerhalb einer jeder Schleife in eine andere jede Schleife verschachtelt nicht
friends = ["Joe", "Sam", "Tom"]
ary = [rand(1..5), rand(6..10), rand(11..20)]
range = (0..2)
Ich möchte einen Code erzeugen, die für Joe etwas zurück, wie folgt:
"Joe at the end of year 1 wrote 2 essays"
"Joe at the end of year 2 wrote 8 essays"
"Joe at the end of year 3 wrote 16 essays"
und für Sam und Tom eine andere Anzahl von Aufsätzen jedes Jahr.
Es ist möglich, den folgenden Code zu verwenden:
friends.each do |friend|
"#{friend} at the end of year 1 wrote #{rand(1..5)} essays"
"#{friend} at the end of year 2 wrote #{rand(6..10)} essays"
"#{friend} at the end of year 3 wrote #{rand(11..20)} essays"
end
aber dieser Code ist repetitiv und redundant, nicht bedenkt, dass die Größe von ary
als hier größer sein kann. Also dachte ich, den folgenden kompakten Code zu verwenden:
friends.each do |friend|
range.each do |num|
"#{friend} at the end of year #{num+1} wrote #{ary[num]} essays"
end
end
Aber dieser Code würde für jeden Freund die gleiche Anzahl von Essays zurückkehren, so dass die Verwendung von Verfahren rand
nutzlos wäre. Warum das? Welche Lösung würden Sie vorschlagen?
Jede Schleife (oder welche alternative Lösung) sollte auf jedem Element von ary, von Anfang bis Ende, ohne Wiederholung iterieren. Die Reihenfolge der Elemente sollte respektiert werden, so dass es einen Verlauf der schriftlichen Aufsätze von Jahr 1 bis Jahr 3 gibt. – Asarluhi
@Asarluhi hast du versucht, die gelieferte Lösung auszuführen? Ich habe den gleichen Fortschritt respektiert, den Sie in Ihrer Frage gegeben haben. – pjs
Sie haben Recht, ich habe nicht bemerkt, dass Sie rand von ary entfernen. Vielen Dank @pjs, es funktioniert! – Asarluhi