Méthode d'accesseur Ruby

Qu'est-ce qu'une méthode d'accesseur?

Une méthode qui lit et écrit la valeur d'une variable d'instance. Ruby est conçu pour que les variables d'instance ne soient pas accessibles telles quelles.

(Exemple)

class Animal
  @name = ""
end

animal = Animal.new
animal.name = "cat"
puts animal.name # => ruby.rb:6:in `<main>': undefined method `name=' for #<Animal:0x00007fce4a8b4b40> (NoMethodError)

Selon cette méthode de définition de code, @name est défini comme une variable différente appelée "variable d'instance de classe", qui est inaccessible depuis l'instance.

Comment définir les variables d'instance accessibles à partir de l'instance?

Par conséquent, utilisez la "méthode accesseur".

Premièrement, il existe trois types de méthodes d'accès.

attr_reader attr_reader est un getter pour accéder aux variables d'instance.

(Exemple)

class Animal
  attr_reader :name 
  def initialize(name)
    @name = name
  end
end

animal = Animal.new("cat") 
puts animal.name # => cat

De cette façon, vous pouvez accéder à la variable d'instance @name en écrivant attr_reader: name. Cependant, tel quel, le setter n'est pas défini, donc @name ne peut pas être changé depuis l'extérieur de la classe.

attr_writer attr_writer est un setter pour accéder aux variables d'instance.

(Exemple)

class Animal
  attr_writer :name
  attr_reader :name
  def initialize(name)
    @name = name
  end
end

animal = Animal.new("cat")
puts animal.name
animal.name = "dog"
puts animal.name 
# => cat
#    dog

De cette façon, en écrivant attr_writer: name en plus de attr_reader: name, la variable d'instance @name peut être modifiée et accessible de l'extérieur.

attr_accessor Cette méthode combine les fonctions de attr_reader et attr_writter.

(Exemple)

class Animal
  attr_accessor :name
  def initialize(name)
    @name = name
  end
end
animal = Animal.new("cat")
puts animal.name
animal.name = "dog"
puts animal.name
# => cat
#    dog

De cette manière, vous pouvez modifier la variable d'instance @name de l'extérieur et y accéder.

Recommended Posts

Méthode d'accesseur Ruby
Méthode Ruby to_s
Méthode de construction Ruby
méthode de la carte rubis
abréviation de la méthode ruby
Glossaire: Accessor / Accessor Method, Encapsulation
définition de la méthode ruby
[Ruby] Résumé des définitions de méthode
Algorithme Ruby (injection, définition de méthode)
[Ruby] Notes sur la méthode gets
[Ruby] Méthode qui renvoie la vérité
[ruby] Appel d'une méthode avec un argument
Modèle de conception par la méthode Ruby Template Mémo de modèle
[Ruby] Méthode pour compter des caractères spécifiques
[Bases de Ruby] méthode split et méthode to_s
[Ruby on Rails] Méthode d'aide pratique
Comment utiliser la méthode Ruby inject
Ruby apprentissage 4
[Ruby] Tableau
Méthode Java
méthode to_i
Ruby apprentissage 5
Bases de Ruby
java (méthode)
Revue Ruby 2
Méthode getRequestDispatcher ()
Ajout de rubis
Méthode d'installation de Ruby on Rails [édition Mac]
Ruby apprentissage 3
Implémentation de la "méthode de détection de circulation Floyd" dans Ruby
Méthode de la carte
inclure la méthode
Méthode abstraite
Ruby print met la méthode de sortie p printf
méthode d'initialisation
Méthode de liste
met méthode
Paramètre Ruby 2
Méthode Java
Méthode de classe
Problème de rubis ⑦
méthode save!
Ruby apprentissage 2
[Java] méthode
Ruby apprentissage 6