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