
sum = 0
10.times do |i|
sum = sum + i + 1
end
sum = 0
numbers = [1,2,3,4,5,6,7,8,9,10]
numbers.each do |n|
sum += n
end
Ich verwende jede Methode für iterative Berechnungen im Array, während die Modellantwort die times-Methode verwendet. Der gemeinsame Punkt ist, dass die Wertesumme außerhalb des Blocks definiert wird und die für diese Summe auszuführende Verarbeitung im Block von do bis end beschrieben wird. Aber alles von 1 bis 10 zu schreiben ist nicht klug. Es gibt ein Bereichsobjekt, das einen Bereich aufeinanderfolgender Werte wie "1 bis 10" darstellt. Erstellen Sie ein Bereichsobjekt mit ... oder .. wie folgt:
1 ... 10 (einschließlich 10) 1..10 (ohne 10) Mit der Methode to_a für dieses Bereichsobjekt können Sie ein zusammenhängendes Array von Werten erstellen
 Sie haben jetzt ein kontinuierliches Array von bis zu 10! Auf die gleiche Weise können Sie auch ein Array erstellen, indem Sie * und ein Bereichsobjekt in [] verwenden. Dies wird als Splat-Erweiterung bezeichnet. Es wird wie folgt sein.
Wenn Sie das Obige zusammenstellen und die Antwort des Beispiels erneut geben, lautet dies wie folgt
sum = 0
numbers = [*1..10]
numbers.each do |n|
sum += n
end
Ich konnte es von Anfang an viel sauberer machen! Sie können es auch noch kompakter gestalten, indem Sie die einzelnen Methoden direkt auf das Bereichsobjekt anwenden. Gleichzeitig verwenden wir anstelle von do ... end als Blocknotation {}.
sum = 0
(1..10).each{ |n| sum += n }
Einführung in die Kompaktierung der iterativen Berechnung mithilfe des Bereichsobjekts und der Methode to_a in jeder Methode. Wenn es um die Programmierung geht, wird nicht nur die Antwort gegeben, sondern es ist für den Betrachter nicht leicht zu verstehen und es ist einfacher, dort Code zu schreiben. Ich möchte weiterhin mit dem Bewusstsein ausgeben, wie einfach es ist, Code zu schreiben!
Einführung in Ruby für Profis Von Sprachspezifikationen bis zu testgetriebenen Entwicklungs- / Debugging-Techniken Software Design plus Kindle-Version Junichi Ito () https://www.amazon.co.jp/dp/B077Q8BXHC/ref=dp-kindle-redirect?_encoding=UTF8&btkr=1