[RUBY] méthode privée

Tout d'abord, j'ai mentionné dans le post précédent que la valeur obtenue par le getter peut être sortie avec ** instance name.getter method name **. ** Je suis désolé d'avoir fait une erreur. ** Lors de l'utilisation d'une variable à laquelle la valeur d'instance est affectée, ** nom de méthode variable.getter ** sera affiché.

Vous trouverez ci-dessous un article sur les méthodes privées.

C'est aussi l'URL que j'ai utilisée comme référence lors de la publication de cette fois. Merci beaucoup. https://26gram.com/private-protected-in-ruby https://qiita.com/kidach1/items/055021ce42fe2a49fd66

Une méthode privée signifie que la description ci-dessous private ne peut pas être appelée depuis l'extérieur de la classe.

class Fruits

  private

  def name
    puts "pomme"
  end

end

apple = Fruits.new
apple.name
Résultat de sortie
 private method `name' called for #<Fruits:0x00007fe767832538> (NoMethodError)

Avec cette description, la méthode d'instance est décrite ci-dessous à partir de private, elle ne peut donc pas être sortie. Une erreur se produira. C'est parce qu'il ne peut pas être appelé de l'extérieur de la classe.

De plus, la description suivante provoque également une erreur.

class Fruits
  
  apple.name 

  private

  def name
    puts "pomme"
  end

end

apple = Fruits.new
Résultat de sortie
undefined local variable or method `apple' for Fruits:Class (NameError)

Alors, quelle est la bonne chose à faire?

Définissez une méthode qui appelle la description suivante plus que privée Appelez cette méthode depuis l'extérieur de la classe.

class Fruits

  def info
    name
  end

  private

  def name
    puts "pomme"
  end

end

apple = Fruits.new
apple.info
Résultat de sortie
pomme

Vous pouvez également appeler les méthodes privées de la classe parent dans la classe enfant.

class InfoFruits
  private

  def name
    puts "pomme"
  end

end

class Fruits < InfoFruits

  def info
    name
  end

end

apple = Fruits.new
apple.info
Résultat de sortie
pomme

Enfin, en utilisant le getter, qui est une méthode privée de la classe parente, La valeur est sortie.


class InfoFruits

  private

  def name #Getter
    @name
  end

end

class Fruits < InfoFruits #Les instances réelles ne peuvent pas être héritées, mais des méthodes et des variables d'instance définies peuvent être utilisées.

  def fruit_name(info_fruit_name)
    @name = info_fruit_name #Définition des variables d'instance
  end

  def info #Vous appelez le nom de la méthode privée.
    name
  end

  def info_fruit
    puts "#{name}" #Dans le post précédent**Nom de l'instance.Nom de la méthode Getter**J'ai mentionné qu'il peut être sorti avec
                   #Je suis désolé d'avoir fait une erreur. Lors de l'utilisation d'une variable à laquelle la valeur de l'instance est affectée**variable.Nom de la méthode Getter**Je sortirai avec.
                   #Puisqu'aucune variable n'est utilisée cette fois, il est possible de sortir sous cette forme.
  end

end

apple = Fruits.new #Génération d'instance
apple.info #J'appelle une méthode pour appeler une méthode privée.
apple.fruit_name("pomme") #fruit_Vous passez un argument à la méthode name.

apple.info_fruit #info_Vous appelez la méthode des fruits.

Résultat de sortie
pomme

C'est tout.

Nous vous serions reconnaissants de bien vouloir signaler toute erreur ou manque de reconnaissance.

Recommended Posts

méthode privée
Méthode Java
java (méthode)
méthode de fusion
Méthode de la carte
inclure la méthode
Méthode abstraite
méthode d'initialisation
Méthode de liste
Méthode Java
Méthode de classe
méthode save!
Méthode getParameter
[Java] méthode
méthode des rails
[Java] méthode
Méthode Ruby to_s
Méthode de transition d'écran
Recherche binaire Méthode de recherche dichotomisée
Méthode de recherche
Méthode de commutation d'exception
Méthode de délégué Rails
problème de méthode de scan
Référence de la méthode Java8
[Méthode HTTP PATCH]
À propos de la méthode
[Java] méthode forEach
[Pratique] Méthode de la carte
[Servlet] Méthode de base
À propos du public privé
Méthode de recherche par bisection
Modèle de méthode de modèle
Modèle de modèle de méthode
Comment remplir 0 (peut être différent de 0)
Méthode d'étude JavaSilver11
méthode keycloak test-skip
Modèle de méthode d'usine
permissions privées, protégées et privées-java
[Ruby] méthode d'initialisation
Méthode de construction Ruby
erreur de méthode `** _ chemin 'non définie
référence de la méthode java8
[Java] Méthode aléatoire
Méthode d'accesseur Ruby
[Java] méthode de fractionnement
méthode de la carte rubis