Es ist leicht in einem Wort zu sagen, aber es ist schwer zu singen. Ich kann mehr Ausdrücke verwenden, aber ich bin an die Einschränkungen des Gelernten gebunden, und dies kann nur so verwendet werden, dass sich viele Leute fragen, wie sie das tun sollen, was sie im Code tun wollen ... Ich bin noch unreif. Ich habe viele solche Erfahrungen. Dieses Mal werde ich für jeden Fall zusammenfassen, was ich aus den Problemen in meinem Code gelernt habe, und meine Gedanken organisieren.
arr_year.rb
date = []
registerd_list.each do |data|
date.push data.createdAt
end
cnt = 0
date.each do |data|
if date.year == data.year
cnt += 1
end
end
cnt
Dies ist ein Ersatz, der die Daten eines Objekts schleift, das eine bestimmte Enumerable-Klasse erbt, das Erstellungsdatum in die Daten in ein Array eintaucht und nur diejenigen zählt, deren Jahr der Gegenwart entspricht. .. Das ist in Ordnung, aber
arr_year_kai.rb
registerd_list.select {|data| data.created_at.year == date.year}.size
Es kann in nur einer Zeile ausgedrückt werden. Wir verwenden hier die Auswahl- und Größenmethoden. Ruby hat eine Menge Methoden, die für jede Klasse verwendet werden können. Es gibt einige Methoden zur Array-Manipulation.
Gibt ein Array zurück, das alle Elemente enthält, für die der Wert, der den Block ausgewertet hat, für jedes Element wahr war. Gibt ein leeres Array zurück, wenn keines der Elemente wahr ist.
Es ist bequem. Es ist eine Methode, die die Fähigkeit eines jeden hat, Bedingungen zu wiederholen und einzufügen.
Gibt die Länge des Arrays zurück. Gibt 0 zurück, wenn das Array leer ist.
Es ist der gleiche Ausdruck wie Länge oder Anzahl.
Sie können Methoden mit {} .size verketten. Es scheint, dass Sie auch end.size machen können. Damit kann die Verarbeitung mehrerer Codezeilen in nur einer Zeile zerquetscht werden. Nein, ich habe Angst.
Welche Zahl wird in einem einzigen Schuss verwendet, auch als magische Zahl bezeichnet? Wenn Sie den Code zurücklesen, der wird, oder wenn jemand ihn liest, müssen Sie ihn so weit wie möglich entfernen, indem Sie sagen, dass es schwierig ist, zu verstehen, was diese Zahl darstellt, oder etwas zu erfinden, wie beispielsweise eine Bedeutung zu geben. Es gibt.
magick_num.rb
def self.get_year
year = Time.new.year + 1
years = []
while year > 2017 do
year = year - 1
years.push year
end
years
end
Dies ist ein Prozess, der durchgeführt wurde, um ein ausgewähltes Formular von 2017 bis zu diesem Jahr zu erstellen, aber ich denke, dass es +1 oder -1 oder so sein wird, aber wenn Sie dies nicht tun, wird es von 2017 bis zu diesem Jahr herauskommen Korrekt. Da es sich um ein Zeitobjekt aus diesem Jahr handelt.
improved_year.rb
def self.get_years
(2017..Time.new.year).to_a.reverse
end
Ja, es wurde in nur einer Zeile gemacht. Ich benutze to_a und reverse, die das range-Objekt verwenden und dort die Methodenkette bilden.
Gibt sich selbst zurück. Wenn jedoch eine Instanz einer Unterklasse von Array aufgerufen wird, wird eine Konvertierung von sich selbst in Array zurückgegeben.
reverse erstellt ein neues Array seiner Elemente und gibt es in umgekehrter Reihenfolge zurück. umgekehrt! Sortiert sich destruktiv. umgekehrt! gibt sich selbst zurück.
Indem man sagt, dass es durch Neuanordnen und Umkehren der Elemente möglich war, sie ab dem letzten Jahr ordentlich anzuordnen, und die magische Zahl ist ebenfalls verschwunden.
w.rb
if full_week_of_one_month.wday == 0
calculation_result_of_amounts.push cnt
cnt = 0
else
calculation_result_of_amounts.push " "
end
Das Obige ist ein Teil des Codes beim Erstellen eines Arrays von Berechnungsergebnissen, aber ich wollte nur an einem bestimmten Tag pushen, daher verwende ich den Tag im bedingten Ausdruck. In Ruby ist 1 Montag und 0 Sonntag, also wollte ich Sonntag beurteilen, also habe ich 0 verwendet, aber es scheint, dass dies 6 ist.
w_kai.rb
WEEK_SUNDAY = 0
if full_week_of_one_month.wday == WEEK_SUNDAY
calculation_result_of_amounts.push cnt
cnt = 0
else
calculation_result_of_amounts.push " "
end
Geben Sie in einem solchen Fall den Zahlen eine Bedeutung und lösen Sie sie. Wenn es konstant gemacht wird, kann es an einem anderen Ort wiederverwendet werden. Dadurch wird es einfacher zu verstehen, was Sie unter dem Vergleich verstehen.
Bedeutung der Initialisierung und Zuordnung. Es ist natürlich genug, um zu atmen, aber es ist leicht zu vergessen. Der folgende Code wird auf unbestimmte Zeit wiederholt. Das liegt daran, dass wir das Jahr natürlich nicht wieder aufgenommen haben und es daher weiterhin größer als 2017 sein wird.
infiniting_roop.rb
def self.get_year
year = Time.new.year + 1
while year > 2017 do
year - 1
p year
end
end
Wenn Sie das Problem beheben, sieht es folgendermaßen aus. Wenn Sie es wieder in die Variable einfügen, wird das Jahr -1 als das Jahr im bedingten Ausdruck verwendet, wenn die nächste Schleife auftritt. Sie müssen also nur subtrahieren, bis die Bedingung erreicht ist, indem Sie die Anzahl der Jahre verwenden, die ordnungsgemäß subtrahiert wurden.
modified_roop.rb
def self.get_year
year = Time.new.year + 1
while year > 2017 do
year = year - 1
p year
end
end
Dies ist ein Teil des Codes, der verarbeitet wird, um zur Zählung der nächsten Woche zu gelangen, nachdem die Daten für eine Woche aggregiert wurden. Es ist ein Prozess, der die Gliederung für das Datum eines Monats durchläuft, eine Schleife erstellt, die das Datum einer Woche darin aggregiert, die Daten nach Erreichen einer Woche in das Array überträgt und die Zählung an diesem Punkt initialisiert. .. Es ist eine Übersetzung, die sie als bedingten Ausdruck in die Schleife einfügt und den numerischen cnt-Wert auf 0 zurückgibt.
calk_date.rb
cnt = 0
amounts_of_calculation_result = []
(beginning_week..last_week_of_next_month).each do |date|
users_dates.each do |user_date|
if date.year == user_date.year && date.day == user_date.day
cnt += 1
end
end
if date.wday == WEEK_SUNDAY
amounts_of_calculation_result.push cnt
cnt = 0
end
end
amounts_of_calculation_result
Wenn Sie also über Logik nachdenken, gibt es zahlreiche Methoden, um wörtliche Ausdrücke zu vermeiden oder zu verstehen und die Initialisierung zu verwenden, um auszudrücken, was Sie tun möchten. Es geht darum, die Ausdrücke zu kombinieren, die Sie zum Erstellen von Logik benötigen. Ich möchte jedes Mal ausgeben, wenn ich die verwendbaren Ausdrücke nicht vergesse.
Recommended Posts