Ich habe while und redo in meinem Unternehmen kombiniert, es so implementiert, dass es sich wiederholt, bis die Bedingungen erfüllt sind, und ich habe den Job in der Produktionsumgebung ausgeführt, also die Ausgabe zum Schreiben einer geeigneten Schleife. (Auch bei Paiza ging es nur um ...)
Zum Zeitpunkt der Codeüberprüfung wurde ich oft gebeten, mit einem Liner neu zu schreiben, daher werde ich, soweit ich verstehen kann, eine Liner-Notation schreiben.
for (Ich glaube nicht, dass es in Ruby viel verwendet wird ...) Die for-Anweisung wird verwendet, wenn Sie die Verarbeitung für den Bereich des angegebenen Bereichsobjekts wiederholen oder die Elemente des Arrays der Reihe nach abrufen möchten.
ruby.rb
for i in 1..3 do
p "#{i}Zweite Schleife"
end
#=>"1. Schleife"
#=>"Zweite Schleife"
#=>"3. Schleife"
Es ist möglich, die Elemente des Arrays in Ordnung zu bringen, aber ich glaube nicht, dass es viele Leute gibt, für die geschrieben wird, und es gibt keinen Grund, also werde ich es weglassen.
each Es ist jedem in Ruby vertraut.
Jede Methode ist eine Methode, die in Arrays, Bereichsobjekten, Hash und Enumerator verwendet werden kann, und Sie können die im Objekt enthaltenen Elemente der Reihe nach abrufen.
ruby.rb
#Array
[1,2,3].each do |i|
p "#{i}Zweite Schleife"
end
#Array einen Liner
[1,2,3].each {|i| p "#{i}Zweite Schleife"}
#Bereichsobjekt
(1..3).each do |i|
p "#{i}Zweite Schleife"
end
#Range Objekt ein Liner
(1..3).each {|i| p "#{i}Zweite Schleife"}
#=>"1. Schleife"
#=>"Zweite Schleife"
#=>"3. Schleife"
"Jedes" wird hauptsächlich verwendet und nicht "für".
while Als nächstes ist während (ich habe es während getan) while-Schleifen, während die angegebene Bedingung erfüllt ist.
Die for-Anweisung und jede Methode durchlaufen die angegebenen Elemente, während die while-Anweisung iteriert, bis der bedingte Ausdruck falsch wird.
ruby.rb
i = 1
while i <= 3 do #do ist optional und funktioniert ohne zu schreiben
p "#{i}Zweite Schleife"
i += 1
end
#=>"1. Schleife"
#=>"Zweite Schleife"
#=>"3. Schleife"
Ich denke, es gibt mehr Risiken als jedes oder jedes Mal, das in Zukunft eingeführt wird. Es gibt keine klare und zuverlässige Obergrenze, und Sie legen die Bedingungen selbst fest. Verwenden Sie sie daher systematisch ...
Wenn Sie es verstehen und verwenden, wird es flexibel und wahnsinnig einfach zu bedienen sein.
until Betrachten Sie es als das genaue Gegenteil von while. Es mag nicht sehr nützlich sein, aber vorerst.
ruby.rb
i = 1
until i > 3 do #do ist optional und funktioniert ohne zu schreiben
p "#{i}Zweite Schleife"
i += 1
end
#=>"1. Schleife"
#=>"Zweite Schleife"
#=>"3. Schleife"
Der Zustand ist gegenüber dem vorherigen umgekehrt und dreht sich, sofern das vordefinierte i 3 nicht überschreitet. Ich empfehle es nicht, weil es schwer zu verstehen ist, aber wenn Sie den numerischen Wert nicht als Bedingung verwenden, scheint es nützlich zu sein.
loop Dies wird nicht herauskommen, es sei denn, Sie beenden es mit Pause. Sie können flexible Bedingungen festlegen, aber ich denke, dies ist auch eine ziemlich riskante Schleife.
ruby.ruby.rb
i = 1
loop{
p "#{i}Zweite Schleife"
i += 1
break if i == 4
}
#=>"1. Schleife"
#=>"Zweite Schleife"
#=>"3. Schleife"
Wenn die definierte Variable "i" gleich 4 wird, wird sie unterbrochen.
times Ich habe es in letzter Zeit oft benutzt, aber ich mag es wirklich (lacht) Ich denke, dass es am besten ist, es die angegebene Anzahl von Malen zu drehen.
ruby.rb
#Bei Verwendung eines Schleifengradwerts
3.times do |i|
p i
end
#Einzeiler
3.times {|i| p i}
#=>"0"
#=>"1"
#=>"2"
#Wenn Sie den Schleifengradwert nicht verwenden
3.times do
p "Es ist eine Schleife, sie dreht sich dreimal"
end
#Einzeiler
3.times {p "Es ist eine Schleife, sie dreht sich dreimal"}
#=>"Es ist eine Schleife, sie dreht sich dreimal"
#=>"Es ist eine Schleife, sie dreht sich dreimal"
#=>"Es ist eine Schleife, sie dreht sich dreimal"
Es wird empfohlen, da es am explizitesten und intuitivsten ist, wenn die angegebene Anzahl von Malen gedreht wird.
upto downto Dies wird auch häufig verwendet, wenn Sie beim Drehen in einer Schleife einen numerischen Wert wünschen. Ich persönlich mag es.
upto ist eine Schleife, bis die angegebene Zahl erreicht ist, in der die Variable um 1 erhöht wird, und downto ist das Gegenteil von upto, eine Schleife, bis die angegebene Zahl erreicht ist, in der die Variable um 1 dekrementiert wird.
ruby.rb
#upto
1.upto(3) do |i|
p "#{i}Zweite Schleife"
end
#bis zu einem Liner
1.upto(3) {|i| p "#{i}Zweite Schleife"}
#=>"1. Schleife"
#=>"Zweite Schleife"
#=>"3. Schleife"
#downto
3.downto(1) do |i|
p i
end
#auf einen Liner
3.downto(1) {|i| p i}
#=>3
#=>2
#=>2
map map durchläuft die Blöcke so oft, wie Elemente im Array vorhanden sind, und gibt das resultierende Array zurück. map! wirkt sich nicht auf den ursprünglichen Wert aus, während map! den ursprünglichen Wert neu schreibt. Außerdem verfügt Ruby über eine Sammelmethode, die ein anderer Name für die Kartenmethode ist.
Es ist praktisch, in einem Array zu verarbeiten und das Ergebnis als Array zu erhalten.
ruby.rb
arr = [1, 2, 3]
arr_new = arr.map { |x| x * 2 }
p arr_new
#=>[2, 4, 6]
Wenn ich mich an Ruby gewöhne, denke ich, dass ich dazu neige, alles in jedes zu schreiben (ich versuche auch, das nicht zu tun). Es gibt jedoch überraschend viele Muster, die bei Verwendung der Karte und nicht bei jedem sauber angewendet werden können.
each.rb
#each
int_list = (1..3).to_a
int_to_double = []
int_list.each do |i|
int_to_double << i * 2
end
p int_to_double
#=>[2, 4, 6]
Ich definiere ein Array, nur um eine neue Liste zu generieren. Dies geschieht mit Hilfe der Karte ...
map.rb
#map
int_list = (1..3)
int_to_double = int_list.map do |i|
i * 2
end
p int_to_double
#Einzeiler
int_list = (1..3)
int_to_double = int_list.map {|i| i * 2}
p int_to_double
#=>[2, 4, 6]
Sie können so ordentlich schreiben.
Darüber hinaus gibt es in Ruby immer noch viele sich wiederholende Syntaxen und Methoden, sodass ich sie nach Überprüfung des Timings erneut hinzufügen werde.
Wenn Sie ein Array verarbeiten und ein neues Array generieren möchten, verwenden Sie map. Wenn Sie den Inhalt des Arrays einzeln herausnehmen und eine bedingte Verzweigung usw. durchführen möchten, verwenden Sie jede Wenn Sie flexible Bedingungen festlegen und eine Schleife ausführen möchten, verwenden Sie while (systematisch verwenden). Wenn Sie die Anzahl der Schleifen im Voraus kennen, stellen Sie die Zeiten ein Wenn Sie einen Wert erhalten möchten, der beim Drehen der Schleife um 1 erhöht oder verringert wird, verwenden Sie upto, downto.
Ich benutze es richtig so.
Es gibt viele Dinge, die Sie beim Drehen der Schleife tun möchten. Der intuitivste Weg ist daher, die intelligente Schleife auszuwählen und zu implementieren.
Recommended Posts