Ich habe versucht, dies als Ergebnis des Ruby-Lernens zu tun. Um ehrlich zu sein, hatte ich keine Hände oder Beine, also habe ich mir die Beispielantworten und angesehen Ich beschloss es zu lesen.
Dieser Rekord. Ich studiere in "Einführung in Ruby für diejenigen, die Profis werden wollen" Es scheint, dass es immer noch nicht genug Tropfen gibt. .. ..
・ Beispielantwort https://qiita.com/sackey_24/items/8fc236bb054aff6b74c8
・ Referenzseite https://www.javadrive.jp/ruby/date_class/index5.html
Es gab einige Dinge, die ich verstehen konnte, wenn ich mir die Antworten ansah, und einige Dinge, die ich zum ersten Mal sah. Ich habe mich zuerst umgesehen und es angeschaut.
In beiden Fällen scheint es nicht zu beginnen, ohne die Date-Klasse zu verstehen. .. ..
-Die Time-Klasse ist eine integrierte Bibliothek, aber die Date-Klasse ist anders. Nennen Sie sie daher "require". -Die Hauptmethoden sind Tag, Mund, Jahr und Tag (jede wird als Ganzzahl erfasst. Tag wird auch als Ganzzahl mit Sonntag als 0 erfasst). -Nach dem Erstellen eines Objekts kann es mithilfe des Formats (strftime-Methode) in eine Zeichenfolge konvertiert werden. →% a Abkürzung für Tag (Sonne, Mo, Do usw.)% W Zahl, die den Tag darstellt
Nachdem ich die Date-Klasse einigermaßen verstanden habe, verstehe ich die Bedeutung des Antwortcodes.
Erstellen Sie zunächst eine Variable
head = Date.today.strftime ("% B,% Y") # Den heutigen Monat und Kalender abrufen → Oben im Kalender anzeigen year = Date.today.year # Der diesjährige Kalender mon = Date.today.mon # Der heutige Monat
Nachdem wir den heutigen Kalender und Monat aus der Datumsklasse erstellt haben Erstellt aus der Datumsklasse am 1. und letzten Tag dieses Monats, wie in den Anforderungen beschrieben.
firstday_wday = Date.new(year,mon,1).wday
lastday_date = Date.new(year,mon,-1).day
week = %w(Su Mo Tu We Th Fr Sa)
Der wichtige Punkt hier ist
** - Bringen Sie die obige Variable als Argument der Instanz. ** ** ** ** ・ Der letzte Tag kann durch Schreiben von "-1" erreicht werden. ** ** ** ** ・% w ist eine Notation, die ein Array erstellt (* getrennt von der Formatzeichenfolge) **
Als nächstes tatsächlich bis hierher ausgeben.
puts head.center(20)
puts week.join(" ")
print " " * firstday_wday
Ist es hier dasselbe? Ich werde zusammenfassen, wo es wurde.
** ・ Die Anzahl der Argumente in der Mittelmethode entspricht der Anzahl der Zeichen, und die Mitte ist entsprechend ausgerichtet ** ** ・ join ("") → Das Leerzeichen im Argument dient dazu, die Tage im Wochenarray offen anzuzeigen ** ** ・ Druckanzeige-Leerzeichen bis zu einem Tag im Kalender mit der Eigenschaft der Anzeige ohne Zeilenumbrüche. ** ** ** ** → Platz für die Anzahl der Tage schaffen **
Datumsangabe am Ende. Zahlen werden wiederholt verarbeitet und Zeilenumbrüche durch bedingte Verzweigung festgelegt.
wday = firstday_wday
(1..lastday_date).each do |date|
print date.to_s.rjust(2) + " "
Ordnen Sie die Zahlen rechtsbündig an. (Bereich angegeben durch 1..lastday_wday) Fügen Sie dann ab dem letzten Starttag (1, wenn es Montag ist) 1 für jeden iterativen Prozess hinzu und beginnen Sie eine neue Zeile, wenn ein Vielfaches von 7 erreicht ist.
wday = wday+1
if wday%7==0
print "\n"
end
end
if wday%7!=0
print "\n"
end
Das ist es.
May 2020
Su Mo Tu We Th Fr Sa
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
Die meisten Teile wurden in das Nachschlagewerk geschrieben, aber als es an der Zeit war, es von 0 zu implementieren, wurde es zu einem Slapstick. .. ..
Durch die Ausgabe können Sie den Teil und den Teil überprüfen, über den im Nachschlagewerk nicht ausführlich gesprochen wird (in diesem Fall die Details der Date-Klasse). Daher möchte ich fortfahren.
Darüber hinaus ist dieser Artikel meine eigene Interpretation. Wenn Sie also Fehler haben, würde ich mich freuen, wenn Sie darauf hinweisen könnten. .. ..
Lesen wir vorerst das Kapitel über das Array zurück. .. ..
Recommended Posts