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".
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