Ich habe den Umfang von Klassenfeldern, Klassenmethoden, Instanzmethoden und den Wirkungsbereich von Instanzvariablen nicht verstanden und sie daher zusammengefasst.
Ich vertiefte mein Verständnis, aber ein neues Geheimnis wurde geboren.
Ich würde mich freuen, wenn Sie mir Vorschläge oder Ergänzungen mitteilen könnten.
class Zoo
def self.kind(animal_name)
@animal_name = animal_name
puts @animal_name #Ausgabe:Giraffe
puts animal_name #Ausgabe:Giraffe
puts @name #Ausgabe:Leer
puts name #Ausgabe:Zoo
end
def self.kind_name
puts @animal_name #Ausgabe:Giraffe
# puts animal_name #Ausgabe:NameError
end
puts @animal_name #Ausgabe:Leer
# puts animal_name #Ausgabe:NameError
def initialize(new_animal)
@new = new_animal
puts "#{@new}Ist angestiegen." #Ausgabe:新たな仲間Ist angestiegen.
end
def kind(name)
@name = name
puts @animal_name #Ausgabe:Leer
# puts animal_Namensausgabe:NameError
puts @name #Ausgabe:Löwe
puts name #Ausgabe:Löwe
end
puts @name #Ausgabe:Leer
puts name #Ausgabe:Zoo
def color(animal_color)
@color = animal_color
#setzt die Namensausgabe:NameError
puts "#{@new}von#{@name}Ist#{@color}ist" #Ausgabe:新たな仲間vonライオンIst黄色ist
#setzt die Namensausgabe:NameError
end
end
Zoo.kind("Giraffe")
#Klassenmethode selbst.Freundliche Ausführung
Zoo.kind_name
#Klassenmethode selbst.kind_Führen Sie den Namen aus
animal = Zoo.new("Neuer Begleiter")
#Erstellen Sie eine Tierinstanz und führen Sie die Initialisierungsmethode aus
puts animal.kind("Löwe")
#Ausführung der Art Instanz Methode der Tierinstanz
puts animal.color("Gelb")
#Ausführung der Farbinstanzmethode der Tierinstanz
#↓ Außerhalb des Anwendungsbereichs
# puts @animal_Namensausgabe:Leer
# puts animal_Namensausgabe:NameError
# puts @Namensausgabe:Leer
#setzt die Namensausgabe:NameError
Zoo
Giraffe
Giraffe
Zoo
Giraffe
Neue Freunde wurden hinzugefügt.
Löwe
Löwe
Der neue Löwenkollege ist gelb
-Der Ausgabeinhalt ist der Inhalt, der in der Reihenfolge von oben einschließlich des Klassenteils gelesen wird.
-Instanzvariablen befinden sich zwischen Klassenmethoden oder zwischen Instanzmethoden. Es ist möglich, sich gegenseitig auszugeben. Da Sie jedoch keine Instanz in einer Klassenmethode erstellen können, @ Ist nur eine Pipe, die Klassenmethoden verbindet.
-Warum in anderen Klassenfeldern als Instanzmethoden (einschließlich Klassenmethoden) Wird der Klassenname ausgegeben, wenn ein undefinierter Name ausgegeben wird?
Recommended Posts