C'est facile à dire en un mot, mais difficile à chanter. Je peux utiliser plus d'expressions, mais je suis plutôt lié par les restrictions de ce que j'ai appris, et cela ne peut être utilisé que comme ça, tellement de gens se demandent comment faire ce qu'ils veulent faire dans le code ... Je suis encore immature. , J'ai beaucoup d'expériences comme celle-ci. Cette fois, je vais résumer ce que j'ai appris des problèmes dans mon code pour chaque cas et organiser mes pensées.
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
Il s'agit d'un substitut qui boucle les données d'un objet qui hérite d'une certaine classe Enumerable, plonge la date de création dans les données dans un tableau et ne compte que ceux dont l'année correspond au présent. .. C'est bien, mais
arr_year_kai.rb
registerd_list.select {|data| data.created_at.year == date.year}.size
Il peut être exprimé en une seule ligne. Nous utilisons ici les méthodes de sélection et de taille. ruby a pas mal de méthodes qui peuvent être utilisées pour chaque classe. Il existe de nombreuses méthodes de manipulation de tableaux.
Renvoie un tableau contenant tous les éléments pour lesquels la valeur qui a évalué le bloc était vraie pour chaque élément. Renvoie un tableau vide si aucun des éléments n'est vrai.
C'est pratique. C'est une méthode qui a la capacité de chacun et si de faire une boucle et d'y mettre des conditions.
Renvoie la longueur du tableau. Renvoie 0 si le tableau est vide.
C'est la même expression que length ou count.
Vous pouvez chaîner des méthodes avec {} .size. Il semble que vous puissiez également faire end.size. Avec cela, le traitement de plusieurs lignes de code peut être écrasé en une seule ligne. Non, j'ai peur.
Quel est le nombre utilisé dans un seul coup, également appelé nombre magique? Lors de la relecture du code qui devient, ou lorsque quelqu'un le lit, il est nécessaire de l'éliminer au maximum en disant qu'il est difficile de comprendre ce que représente ce nombre, ou d'imaginer quelque chose comme donner du sens. Il y a.
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
Il s'agit d'un processus fait pour créer un formulaire de sélection de 2017 à cette année, mais je pense que ce sera +1 ou -1 ou quelque chose du genre, mais en fait, si vous ne le faites pas, il sortira de 2017 à cette année C'est vrai. Puisqu'il s'agit d'un objet Time de cette année.
improved_year.rb
def self.get_years
(2017..Time.new.year).to_a.reverse
end
Oui, cela a été fait en une seule ligne. J'utilise to_a et reverse qui utilisent l'objet range et y créent la chaîne de méthodes.
Renvoie soi-même. Cependant, lorsqu'il est appelé pour une instance d'une sous-classe de Array, il retourne une conversion de lui-même en Array.
reverse crée et renvoie un nouveau tableau de ses éléments dans l'ordre inverse. inverse! Trie lui-même de manière destructive. inverse! retourne soi-même.
En disant qu'en réorganisant et en inversant les éléments, il a été possible de l'arranger proprement à partir de la dernière année, et le nombre magique a également disparu.
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
Ce qui précède fait partie du code lors de la création d'un tableau de résultats de calcul, mais je voulais pousser uniquement un jour spécifique, donc j'utilise le jour dans l'expression conditionnelle. En rubis, 1 est lundi et 0 est dimanche, donc je voulais juger dimanche, donc j'ai utilisé 0, mais il semble que ce soit 6.
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
Dans un tel cas, donnez du sens aux nombres et résolvez-les. Si elle est rendue constante, elle peut être réutilisée ailleurs. Cela permet de comprendre plus facilement ce qu'ils signifient lors de la comparaison.
Importance de l'initialisation et de l'affectation. C'est assez naturel pour respirer, mais c'est facile à oublier. Le code ci-dessous boucle indéfiniment. C'est parce que, bien sûr, nous n'avons pas réintégré l'année, donc elle continuera à être plus longue que 2017.
infiniting_roop.rb
def self.get_year
year = Time.new.year + 1
while year > 2017 do
year - 1
p year
end
end
Si vous le corrigez, cela ressemblera à ce qui suit. Si vous le remettez dans la variable, l'année -1 sera utilisée comme année dans l'expression conditionnelle lors de la prochaine boucle, vous n'aurez donc qu'à soustraire jusqu'à ce que la condition soit atteinte en utilisant le nombre d'années correctement soustrait.
modified_roop.rb
def self.get_year
year = Time.new.year + 1
while year > 2017 do
year = year - 1
p year
end
end
Il s'agit d'une partie du code en cours de traitement pour passer au décompte de la semaine suivante après avoir agrégé les données pendant une semaine. C'est un processus qui boucle le contour pour une date d'un mois, crée une boucle qui agrège la date d'une semaine, pousse les données dans le tableau lorsqu'une semaine est atteinte et initialise le décompte à ce stade. .. C'est une traduction qui le met dans la boucle en tant qu'expression conditionnelle et renvoie la valeur numérique cnt à 0.
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
Ainsi, lorsque vous pensez à la logique, il existe de nombreuses méthodes, évitant ou donnant un sens aux expressions littérales, et utilisant l'initialisation pour exprimer ce que vous voulez faire. Il s'agit de combiner les expressions dont vous disposez pour créer une logique. Je voudrais sortir chaque fois que je n'oublie pas les expressions que je peux utiliser.
Recommended Posts