In derselben Instanz gemeinsam genutzte Variablen
python
class Food
def initialize(name)
#Speichern Sie den beim Erstellen der Instanz übergebenen Namen in der Instanzvariablen
@name = name
end
def eat
"I will eat an #{@name}"
end
end
food = Food.new('apple')
food.hello #=> "I will eat an apple"
Instanzvariablen können nicht von außerhalb der Klasse referenziert werden!
python
class Food
def initialize(name)
@name = name
end
#@Methode zum Referenzieren des Namens von außen
def name
@name
end
end
food = Food.new('apple')
#Über die Namensmethode@Holen Sie sich den Inhalt des Namens
food.name #=> "apple"
Definieren Sie eine Methode zum Ändern des Inhalts von Instanzvariablen, auch wenn Sie diese von außen ändern möchten
python
class Food
def initialize(name)
@name = name
end
#@Methode zum Referenzieren des Namens von außen
def name
@name
end
#@Methode zum Ändern des Namens von außen
def name=(value)
@name = value
end
end
food = Food.new('apple')
#Es sieht so aus, als würden Sie es einer Variablen zuweisen, aber es ist eigentlich ein Name=Sie rufen eine Methode auf.
food.name = 'banana'
#Über die Namensmethode@Holen Sie sich den Inhalt des Namens
food.name #=> "banana"
Eine Methode, die den Wert einer Instanzvariablen liest und schreibt, wird als "Zugriffsmethode" bezeichnet. Das Schreiben dieser Methoden nacheinander ist mühsam. Hier kommt die "attr_accessor-Methode" ins Spiel.
python
class Food
#@Methoden zum Lesen und Schreiben von Namen werden automatisch definiert
attr_accessor :name
def initialize(name)
@name = name
end
#@Methode zum Referenzieren des Namens von außen
#def name
#@name
#end
#@Methode zum Ändern des Namens von außen
#def name=(value)
#@name = value
#end
end
food = Food.new('apple')
#@Namen ändern
food.name = 'banana'
#@Siehe Name
food.name #=> "banana"
"Attr_reader", wenn Sie den Inhalt der Instanzvariablen schreibgeschützt machen möchten Wenn Sie nur schreiben möchten, "attr_writer"
Referenz Eine Einführung in Ruby für diejenigen, die Profis werden wollen
Recommended Posts