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