Zuerst habe ich im vorherigen Beitrag erwähnt, dass der vom Getter erhaltene Wert mit ** Instanzname.getter Methodenname ** ausgegeben werden kann. ** Es tut mir leid, dass ich einen Fehler gemacht habe. ** Bei Verwendung einer Variablen, der der Instanzwert zugewiesen ist, wird der Methodenname ** variable.getter ** ausgegeben.
Unten ist ein Beitrag über private Methoden.
Dies ist auch die URL, die ich beim Posten dieses Mal als Referenz verwendet habe. Vielen Dank. https://26gram.com/private-protected-in-ruby https://qiita.com/kidach1/items/055021ce42fe2a49fd66
Eine private Methode bedeutet, dass die Beschreibung unter private nicht von außerhalb der Klasse aufgerufen werden kann.
class Fruits
private
def name
puts "Apfel"
end
end
apple = Fruits.new
apple.name
Ausgabeergebnis
private method `name' called for #<Fruits:0x00007fe767832538> (NoMethodError)
Mit dieser Beschreibung wird die Instanzmethode unten von privat beschrieben, sodass sie nicht ausgegeben werden kann. Ein Fehler wird auftreten. Dies liegt daran, dass es nicht von außerhalb der Klasse aufgerufen werden kann.
Darüber hinaus verursacht die folgende Beschreibung auch einen Fehler.
class Fruits
apple.name
private
def name
puts "Apfel"
end
end
apple = Fruits.new
Ausgabeergebnis
undefined local variable or method `apple' for Fruits:Class (NameError)
Was ist also das Richtige?
Definieren Sie eine Methode, die die folgende Beschreibung mehr als privat aufruft Rufen Sie diese Methode von außerhalb der Klasse auf.
class Fruits
def info
name
end
private
def name
puts "Apfel"
end
end
apple = Fruits.new
apple.info
Ausgabeergebnis
Apfel
Sie können auch die privaten Methoden der übergeordneten Klasse in der untergeordneten Klasse aufrufen.
class InfoFruits
private
def name
puts "Apfel"
end
end
class Fruits < InfoFruits
def info
name
end
end
apple = Fruits.new
apple.info
Ausgabeergebnis
Apfel
Verwenden Sie schließlich den Getter, eine private Methode der übergeordneten Klasse. Der Wert wird ausgegeben.
class InfoFruits
private
def name #Getter
@name
end
end
class Fruits < InfoFruits #Reale Instanzen können nicht vererbt werden, es können jedoch definierte Instanzmethoden und -variablen verwendet werden.
def fruit_name(info_fruit_name)
@name = info_fruit_name #Definition von Instanzvariablen
end
def info #Sie rufen den privaten Methodennamen auf.
name
end
def info_fruit
puts "#{name}" #Im vorherigen Beitrag**Instanzname.Getter Methodenname**Ich erwähnte, dass es mit ausgegeben werden kann
#Es tut mir leid, dass ich einen Fehler gemacht habe. Bei Verwendung einer Variablen, der der Wert der Instanz zugewiesen ist**Variable.Getter Methodenname**Ich werde mit ausgeben.
#Da diesmal keine Variablen verwendet werden, ist es möglich, in dieser Form auszugeben.
end
end
apple = Fruits.new #Instanzgenerierung
apple.info #Ich rufe eine Methode auf, um eine private Methode aufzurufen.
apple.fruit_name("Apfel") #fruit_Sie übergeben ein Argument an die Namensmethode.
apple.info_fruit #info_Sie rufen die Fruchtmethode auf.
Ausgabeergebnis
Apfel
Das ist alles.
Wir würden uns freuen, wenn Sie auf Fehler oder mangelnde Anerkennung hinweisen könnten.
Recommended Posts