[RUBY] À propos de attr_accessor

Qu'est-ce qu'une variable d'instance?

Variables partagées dans la même instance

python


class Food
  def initialize(name)
    #Enregistrez le nom passé lors de la création de l'instance dans la variable d'instance
   @name = name
  end

  def eat
  "I will eat an #{@name}"
  end
end
food = Food.new('apple')
food.hello #=> "I will eat an apple"

Les variables d'instance ne peuvent pas être référencées depuis l'extérieur de la classe!

python


class Food
  def initialize(name)
   @name = name
  end

  #@Méthode pour référencer le nom de l'extérieur
  def name
  @name
  end
end
food = Food.new('apple')
#Via la méthode du nom@Obtenez le contenu du nom
food.name #=> "apple"

Même si vous souhaitez modifier le contenu de la variable d'instance de l'extérieur, définissez une méthode de modification

python


class Food
  def initialize(name)
   @name = name
  end

  #@Méthode pour référencer le nom de l'extérieur
  def name
  @name
  end

 #@Méthode de changement de nom de l'extérieur
  def name=(value)
    @name = value
  end
end
food = Food.new('apple')
#On dirait que vous l'assignez à une variable, mais c'est en fait un nom=Vous appelez une méthode.
food.name = 'banana'
#Via la méthode du nom@Obtenez le contenu du nom
food.name #=> "banana"

Une méthode qui lit et écrit la valeur d'une variable d'instance est appelée "méthode accesseur". Ecrire ces méthodes une par une est un problème. C'est là qu'intervient la "méthode attr_accessor".

Méthode attr_accessor

python


class Food
  #@Les méthodes pour lire et écrire le nom sont automatiquement définies
  attr_accessor :name

  def initialize(name)
   @name = name
  end

  #@Méthode pour référencer le nom de l'extérieur
  #def name
  #@name
  #end

 #@Méthode de changement de nom de l'extérieur
  #def name=(value)
    #@name = value
  #end
end
food = Food.new('apple')
#@Changer de nom
food.name = 'banana'
#@Se référer au nom
food.name #=> "banana"

"Attr_reader" si vous souhaitez rendre le contenu de la variable d'instance en lecture seule Si vous voulez écrire uniquement, "attr_writer"

référence Une introduction à Ruby pour ceux qui veulent devenir des professionnels

Recommended Posts

À propos de attr_accessor
À propos =
À propos de method.invoke
À propos de Kotlin
À propos de Hinemos
À propos de l'héritage
À propos de Docker
À propos des rails 6
À propos du printemps ③
À propos d'énumération
À propos du polymorphisme
À propos facultatif
À propos du hachage
À propos de JitPack
À propos de ça ()
À propos de l'encapsulation
À propos de JAVA_HOME
À propos de statique
À propos des exceptions
À propos de la portée
[Maven] À propos de Maven
À propos de la gestion des exceptions
À propos de l'interface Java
[Java] À propos des fonctionnalités de Java 12
À propos du routage des rails
À propos de la complexité cyclique
À propos de la gestion des exceptions
À propos des génériques AsyncTask
À propos des symboles Ruby
À propos de la multiplication des tableaux
[Java] À propos des tableaux
À propos de l'héritage de classe.
À propos de Spring AOP
À propos de Ruby Hash
À propos des méthodes singulières
À propos des outils de création
Mâchez l'API
[À propos du double hachage]
Quelque chose à propos de java
Où est Java
À propos de la méthode de HttpServlet ()
À propos des fonctionnalités Java
À propos de SIGNING_REGION: NoSuchFieldError
À propos de la méthode