Es gibt viele Dinge, die man nicht sehen kann, wenn man die Rubin-Schreib- und Denkmethode in einem Buch liest und es vorerst bewegt. Wenn Sie nur eine geringe Lesefähigkeit haben, um den Code anderer zu lesen, bleiben Sie bei gewohnheitsmäßigen Ausdrücken hängen. Wenn Sie die Gewohnheit nicht kennen, werden Leute, die daran gewöhnt sind, möglicherweise von dem Code überrascht sein, den Sie geschrieben haben. Die Benennungsmethode, die ich zuvor geschrieben habe, ist eine davon, aber dieses Mal möchte ich zusammenfassen, was ich auf andere Weise gelernt habe.
Was in dieser Klassenmethode selbst geschrieben ist ... Sie können diese Methode nicht aufrufen, ohne sie zu schreiben. Ich spreche darüber warum. Die erste Frage, die Sie denken, ist. Wenn Sie nicht an Objektorientierung gewöhnt sind, werden Sie hier stolpern.
Die Antwort ist, die Klassenmethode zu zeigen. Diese Methode macht den Empfänger zum Klassennamen. Im Folgenden erfahren Sie, wie Sie eine Klassenmethode schreiben, wie im Buch dargestellt. Beim Aufruf wird der Klassenname Greeter als Empfänger verwendet und die Greet-Methode aufgerufen.
class_method.ruby
class Greeter
class << self
def greet
puts "Guten Abend"
end
end
end
Greeter.greet
Das Folgende ist, wie man mit sich selbst wie ein Empfänger schreibt. Ich denke, es ist die Begrüßungsmethode der Klasse selbst. Am Anfang habe ich nur das gesehen, also habe ich nichts verstanden.
self.rb
class Greeter
def self.greet
puts "Guten Abend"
end
end
Greeter.greet
Der Grund, es als Begrüßungsmethode der Klasse selbst zu betrachten, ist, dass es wie folgt geschrieben werden kann. Sie können die greet-Methode auch aufrufen, indem Sie den Klassennamen direkt wie einen Empfänger anstelle von self schreiben.
class.rb
class Greeter
def Greeter.greet
puts "Guten Abend"
end
end
Greeter.greet
Warum also Self in Klassenmethoden verwenden?
--Schreibe dich selbst und unterscheide dich von der Instanzmethode --Vorbeugung des zweimaligen Schreibens
Es scheint, dass es zwei Punkte gibt. Ich werde den Unterschied zur Instanzmethode zu einem späteren Zeitpunkt beschreiben.
Ich habe gesehen, dass einige Codes auch slef in class_attribute in Rails Active Support verwenden. Dies hat auch funktioniert, wenn ich den Selbstteil in die Firebase-Klasse umgeschrieben habe. Es scheint also, dass dieses class_attribute auch aufgerufen wird und wie ein Buchstabe als Class # klassifiziert wird.
firebase.rb
class Firebase
require 'google/cloud'
class_attribute :contact
self.contact = Google::Cloud.new(ENV['GOOGLE_PROJECT']).firestore
end
Wenn Sie den Ball auf dem Billardständer in einem Winkel von 45 Grad von links oben nach rechts unten abfeuern und eine ideale Reflexion an der Wand vornehmen, welche Koordinaten und wie viele Schritte fällt der Ball in das Eckloch
Als ich den Code für die Spielprogrammierung als Problem bekam (ich stellte später fest, dass es sich um eine Spielprogrammierung handelte), arbeitete ich bisher an der Logikassemblierung in einer endlichen Schleife (z. B. ein Monat Benutzer). Da die Anzahl der Registranten berechnet wird, kam die Idee dieser Art von Endlosschleifenlogik (wie das Wollen für die Anzahl der aus der Datenbank abgerufenen Benutzer) nicht auf. Erstens ist auch die Grundlage der Denklogik nicht verlassen worden, und dieses Problem konnte nicht gelöst werden, bis die Antworten übereinstimmten.
billiard.rb
x_max = ARGV[0]
y_max = ARGV[1]
if !x_max || !y_max
puts "Bitte geben Sie das Argument an"
exit 1
end
x_max = x_max.to_i
y_max = y_max.to_i
#Status
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
Unten ist eine Zusammenfassung dessen, was ich gelernt habe.
Das Programm ist die Zustandsänderung der zu verarbeitenden Daten. Um es in diesem Billardproblem konkret zu machen,
Überlegen Sie, welcher Status geändert werden soll und was behoben werden soll, um den gewünschten Code zu erstellen.
Schreiben Sie einen bedingten Ausdruck und einen Prozess, der dem Zustand Bewegung verleiht, indem Sie feststellen, was die Änderung des Zustands oder das Ende auslöst. Um es in diesem Billardproblem konkret zu machen,
Es bedeutet das. Indem Sie dies unterdrücken, können Sie feststellen, wann sich der Bewegungszustand des Balls ändert. Dies ist wichtig, wenn bedingte Ausdrücke berücksichtigt werden. Beachten Sie beim Ausführen der Logik die Randbedingungen.
Endlosschleifen in der Programmierung
** Verwenden Sie eine Endlosschleife für diejenigen, deren Beendigungsbedingungen während der Ausführung der Schleife sichtbar sind. Mit anderen Worten, verwenden Sie eine Endlosschleife, indem Sie etwas ausnutzen, bei dem Sie die Beendigungsbedingung beim Schreiben eines Programms nicht genau kennen. ** **.
Das Spielprogramm ist genau die Strichbewegung des Charakters, die von der Eingabe des Benutzers abhängt. Daher ist es notwendig, eine Endlosschleife durchzuführen, solange sie eingegeben wird.
Die Verwendung in einer Endlosschleife ist auch für DB erforderlich. Wenn eine große Datenmenge in einer Schleife verarbeitet wird, ist fast die gleiche Anzahl von Schleifen erforderlich wie bei einer Endlosschleife. Daher muss sie so gestaltet werden, dass sie endet, wenn bestimmte Bedingungen erfüllt sind.
Beim Erstellen der Logik konnte ich die Aufgabe dieses Mal nicht erreichen, da ich den Code überhaupt nicht schreiben konnte, unabhängig davon, ob es sich um eine endliche Schleife oder eine Schleife handelte, die bis zu einem bestimmten Zustand fortgesetzt wurde, aber als wichtiger Gedanke unendlich war. Ich bin froh, dass ich die Schleife verstanden habe.
Recommended Posts