J'ai essayé de le faire en tant que sortie de l'apprentissage Ruby, Pour être honnête, je n'avais ni mains ni jambes, alors j'ai regardé les exemples de réponses et J'ai décidé de le lire.
Ce record. J'étudie en "Introduction à Ruby pour ceux qui veulent devenir professionnels" Il semble qu'il n'y ait toujours pas assez de goutte. .. ..
・ Exemple de réponse https://qiita.com/sackey_24/items/8fc236bb054aff6b74c8
・ Site de référence https://www.javadrive.jp/ruby/date_class/index5.html
Il y avait des choses que je pouvais comprendre en regardant les réponses, et certaines choses que j'ai vues pour la première fois. J'ai d'abord regardé autour de moi et l'ai regardé.
Quoi qu'il en soit, cela ne semble pas démarrer sans comprendre la classe Date. .. ..
-La classe Time est une bibliothèque intégrée, mais la classe Date est différente, alors appelez-la avec "require". -Les principales méthodes sont day, mouth, year et wday (chacune est acquise sous forme d'entier. Wday est également acquise sous forme d'entier avec Sunday comme 0). -Après avoir créé un objet, il peut être converti en chaîne de caractères en utilisant le format (méthode strftime) →% a Abréviation du jour (dim, lun, jeu, etc.)% w Nombre représentant le jour
Maintenant que je comprends dans une certaine mesure la classe Date, je comprends la signification du code de réponse.
Commencez par créer une variable
head = Date.today.strftime ("% B,% Y") # Obtenir le mois et le calendrier du jour → Afficher en haut du calendrier year = Date.today.year # Calendrier de cette année mon = Date.today.mon # Le mois d'aujourd'hui
Maintenant que nous avons créé le calendrier et le mois d'aujourd'hui à partir de la classe Date Créé à partir de la classe Date le 1er et dernier jour de ce mois, comme décrit dans les exigences.
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)
Le point important ici est
** - Apportez la variable ci-dessus comme argument de l'instance. ** ** ** ・ Le dernier jour peut être obtenu en écrivant "-1". ** ** ** ・% w est une notation qui crée un tableau (* distinct de la chaîne de caractères de format) **
Ensuite, sortez en fait jusqu'ici.
puts head.center(20)
puts week.join(" ")
print " " * firstday_wday
Est-ce la même chose ici? Je vais résumer où il est devenu.
** ・ Le nombre d'arguments dans la méthode du centre est le nombre de caractères, et le centre est aligné en conséquence ** ** ・ join ("") → L'espace dans l'argument sert à afficher ouvertement les jours dans le tableau de la semaine ** ** ・ Imprimer affiche les blancs jusqu'à un jour sur le calendrier en utilisant la caractéristique d'affichage sans saut de ligne. ** ** ** → Faites de la place pour le nombre de jours **
Notation de date à la fin. Les nombres sont traités à plusieurs reprises et les sauts de ligne sont définis par branchement conditionnel.
wday = firstday_wday
(1..lastday_date).each do |date|
print date.to_s.rjust(2) + " "
Disposez les nombres justifiés à droite. (Plage spécifiée par 1..lastday_wday) Ensuite, à partir du dernier jour de début (1 si c'est lundi), ajoutez 1 pour chaque processus itératif et démarrez une nouvelle ligne lorsqu'elle atteint un multiple de 7.
wday = wday+1
if wday%7==0
print "\n"
end
end
if wday%7!=0
print "\n"
end
C'est tout.
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
La plupart des parties ont été écrites dans le livre de référence, mais quand est venu le temps de l'implémenter à partir de 0, il est devenu un slapstick. .. ..
En le sortant, vous pouvez vérifier cette partie et la partie dont on ne parle pas profondément dans le livre de référence (dans ce cas, les détails de la classe Date), je voudrais donc continuer régulièrement.
De plus, cet article est ma propre interprétation, donc si vous trouvez des erreurs, je vous serais reconnaissant si vous pouviez les signaler. .. ..
Relisons le chapitre sur le tableau pour le moment. .. ..
Recommended Posts