[RUBY] private Methode

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

private Methode
Java-Methode
Java (Methode)
Zusammenführungsmethode
Kartenmethode
Methode einschließen
Abstrakte Methode
Methode initialisieren
Listenmethode
Java-Methode
Klassenmethode
Save! -Methode
getParameter-Methode
[Java] -Methode
Schienenmethode
[Java] -Methode
Ruby to_s Methode
Bildschirmübergangsmethode
Dichotomisierte Suchmethode für die binäre Suche
Suchmethode
Ausnahmeschaltmethode
Schienen delegieren Methode
Problem mit der Scanmethode
Java8-Methodenreferenz
[HTTP-Methode PATCH]
Über die Methode
[Java] forEach-Methode
[Übung] Kartenmethode
[Servlet] Grundlegende Methode
Über private öffentliche
Bisektionssuchmethode
Muster der Vorlagenmethode
Muster der Vorlagenmethode
Wie man 0 ausfüllt (kann anders als 0 sein)
JavaSilver11-Lernmethode
Key-Cloak-Test-Skip-Methode
Factory Method Muster
private, geschützte, private Berechtigungen-Java
[Ruby] Initialisierungsmethode
Ruby-Build-Methode
undefinierte Methode `** _ path'error
Java8-Methodenreferenz
[Java] Zufällige Methode
Ruby-Accessor-Methode
[Java] Split-Methode
Ruby Map Methode