Il y a beaucoup de choses qui ne peuvent pas être vues simplement en lisant la méthode d'écriture rubis et la méthode de réflexion dans un livre et en le déplaçant pour le moment. Si vous avez une faible capacité de lecture pour lire le code des autres, vous serez coincé avec des expressions habituelles. De plus, si vous ne connaissez pas cette habitude, les gens qui y sont habitués peuvent être surpris par le code que vous avez écrit. La méthode de dénomination que j'ai écrite plus tôt en fait partie, mais cette fois, j'aimerais résumer ce que j'ai appris d'une manière différente.
Qu'est-ce qui est auto-écrit dans cette méthode de classe ... Vous ne pouvez pas appeler cette méthode sans l'écrire. Je parle de pourquoi. La première question que vous avez est. Si vous n'êtes pas habitué à l'orientation des objets en premier lieu, vous tomberez ici.
La réponse est de montrer la méthode de classe. Cette méthode fait du récepteur le nom de la classe. Voici comment écrire une méthode de classe comme vu dans le livre. Lors de l'appel, le nom de classe Greeter est utilisé comme récepteur et la méthode greet est appelée.
class_method.ruby
class Greeter
class << self
def greet
puts "Bonsoir"
end
end
end
Greeter.greet
Voici comment écrire en utilisant soi-même comme un récepteur. Je pense que c'est la méthode de salutation de la classe elle-même. Au début, je n'ai vu que cela, donc je n'ai rien compris.
self.rb
class Greeter
def self.greet
puts "Bonsoir"
end
end
Greeter.greet
La raison pour laquelle on la considère comme la méthode de salutation de la classe elle-même est qu'elle peut s'écrire comme suit. Vous pouvez également appeler la méthode greet en écrivant le nom de la classe directement comme un receveur au lieu de self.
class.rb
class Greeter
def Greeter.greet
puts "Bonsoir"
end
end
Greeter.greet
Alors pourquoi utiliser self dans les méthodes de classe?
Il semble qu'il y ait deux points. Je décrirai la différence par rapport à la méthode d'instance à une date ultérieure.
J'ai vu du code utiliser également slef dans class_attribute dans les rails Active Support. Cela a également fonctionné même si je réécrivais la partie self dans la classe Firebase, il semble donc que cet attribut class_attribute soit également appelé et classé comme Classe # comme une lettre.
firebase.rb
class Firebase
require 'google/cloud'
class_attribute :contact
self.contact = Google::Cloud.new(ENV['GOOGLE_PROJECT']).firestore
end
Lors du tir de la balle à 45 degrés du haut à gauche vers le bas à droite sur le support de billard et en faisant une réflexion idéale sur le mur, quelles coordonnées et combien de pas la balle tombe-t-elle dans le trou d'angle?
Quand j'ai reçu le code pour la programmation de jeu comme un problème (j'ai réalisé plus tard qu'il s'agissait de programmation de jeu), je travaillais jusqu'à présent sur l'assemblage logique dans une boucle finie (par exemple, utilisateur d'un mois) Puisque le nombre de registrants est calculé, l'idée de ce type de logique de boucle infinie (comme vouloir boucler pour le nombre d'utilisateurs récupérés de la base de données) n'a pas surgi. En premier lieu, même les fondements de la logique de la pensée n'ont pas été abandonnés et ce problème ne pouvait être résolu tant que les réponses n'étaient pas concordantes.
billiard.rb
x_max = ARGV[0]
y_max = ARGV[1]
if !x_max || !y_max
puts "Veuillez spécifier l'argument"
exit 1
end
x_max = x_max.to_i
y_max = y_max.to_i
#Statut
x = 1
y = 1
step = 1
x_way = 1
y_way = 1
puts " #{step} (#{x},#{y})"
x += 1
y += 1
loop do
step += 1
puts " #{step} (#{x},#{y})"
if y == 1 && x == x_max || x == 1 && y == y_max || x == 1 && y == 1 || x == x_max && y == y_max
puts "GOAL!!"
break
elsif x == x_max
x_way = -1
elsif y == y_max
y_way = -1
elsif x == 1
x_way = 1
elsif y == 1
y_way = 1
end
x += x_way
y += y_way
end
Voici un résumé de ce que j'ai appris.
Le programme est le changement d'état des données à traiter. Pour concrétiser ce problème de billard,
Pensez à l'état à modifier et à ce qui est corrigé pour créer le code souhaité.
Écrivez une expression conditionnelle et un processus qui donne un mouvement à l'état en déterminant ce qui déclenche le changement d'état ou la fin. Pour concrétiser ce problème de billard,
--Valeurs minimales et maximales dans les directions de l'axe x et de l'axe y sur les quatre murs
Cela signifie que. En supprimant cela, il est possible de déterminer quand l'état de déplacement de la balle change. C'est important lorsque l'on considère les expressions conditionnelles. Lors de l'exécution de la logique, tenez compte des conditions aux limites.
Boucles infinies dans la programmation
** Utilisez une boucle infinie pour ceux dont les conditions de terminaison sont visibles lors de l'exécution de la boucle. En d'autres termes, utilisez une boucle infinie en tirant parti de quelque chose dont vous ne connaissez pas clairement la condition de terminaison lors de l'écriture d'un programme. ** **
Le programme de jeu est exactement le mouvement du tiret de ce personnage dépend de l'entrée de l'utilisateur, il est donc nécessaire de boucler indéfiniment tant qu'il est entré.
L'utilisation dans une boucle infinie est également nécessaire pour DB. Lors du traitement d'une grande quantité de données dans une boucle, cela nécessite presque le même nombre de boucles qu'une boucle infinie, il est donc nécessaire de la concevoir de manière à ce qu'elle se termine lorsque certaines conditions sont remplies.
En construisant la logique, je n'ai pas pu atteindre la tâche cette fois parce que je ne pouvais pas écrire le code en premier lieu, qu'il s'agisse d'une boucle finie ou d'une boucle qui continuait jusqu'à une certaine condition, mais infinie en tant que pensée importante. Je suis content d'avoir compris la boucle.
Recommended Posts