Code schreiben Ruby

Was ist der Akt des Schreibens von Code mit Ruby?

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.

Klassenmethode selbst

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.

Klassenbezogen beiseite

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

Der erste Schritt der Logik ist wesentlich

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.

Staatsverwaltung

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.

Randbedingung

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.

Endlosschleife korrigieren

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.

Impressionen

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

Code schreiben Ruby
Rubin vertikales Schreiben
Formatieren Sie Ruby mit VS-Code
Ein Memorandum zum Schreiben von schönem Code
[Hinweis] [Anfänger] So schreiben Sie Ruby Memo (Refactoring) 1
[Ruby] Array
Rubin lernen 5
Ruby-Grundlagen
[Ruby on Rails] Codeprüfung mit Rubocop-Airbnb
Ruby Review 2
Schriftliche Unterschiede in Ruby, PHP, Java, JS
Rubinzusatz
Ruby lernen 3
Ruby-Einstellung 2
Rubinproblem ⑦
Ruby lernen 2
Testbarer Code
Schreiben Sie Code mit Ruby-Klassen und -Instanzen
Ruby-Einstellungen 1
Rubin lernen 1
Ruby Review 1
Ruby Warrior ist ein nostalgisches Code-Spiel
[Ruby] Code zur Anzeige des Tages
Wie man Code schreibt, der objektorientiertes Ruby denkt