Ruby-Accessor-Methode

Was ist eine Accessormethode?

Eine Methode, die den Wert einer Instanzvariablen liest und schreibt. Ruby ist so konzipiert, dass auf Instanzvariablen nicht so zugegriffen werden kann, wie sie sind.

(Beispiel)

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)

Gemäß dieser Codedefinitionsmethode wird @name als eine andere Variable namens "Klasseninstanzvariable" definiert, auf die von der Instanz aus nicht zugegriffen werden kann.

Wie soll ich die Instanzvariablen definieren, auf die von der Instanz aus zugegriffen werden kann?

Verwenden Sie daher die "Accessor-Methode".

Erstens gibt es drei Arten von Zugriffsmethoden.

attr_reader attr_reader ist ein Getter für den Zugriff auf Instanzvariablen.

(Beispiel)

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

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

Auf diese Weise können Sie auf die Instanzvariable @name zugreifen, indem Sie attr_reader: name schreiben. Der Setter ist jedoch nicht definiert, sodass @name nicht von außerhalb der Klasse geändert werden kann.

attr_writer attr_writer ist ein Setter für den Zugriff auf Instanzvariablen.

(Beispiel)

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

Auf diese Weise kann durch Schreiben von attr_writer: name zusätzlich zu attr_reader: name die Instanzvariable @name geändert und von außen aufgerufen werden.

attr_accessor Diese Methode kombiniert die Funktionen von attr_reader und attr_writter.

(Beispiel)

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

Auf diese Weise können Sie die Instanzvariable @name von außen ändern und darauf zugreifen.

Recommended Posts

Ruby-Accessor-Methode
Ruby to_s Methode
Ruby-Build-Methode
Ruby Map Methode
Abkürzung für Ruby-Methode
Glossar: Accessor / Accessor-Methode, Kapselung
Definition der Rubinmethode
[Ruby] Zusammenfassung der Methodendefinitionen
Ruby-Algorithmus (Injizieren, Methodendefinition)
[Ruby] Hinweise zur Methode gets
[Ruby] Methode, die die Wahrheit zurückgibt
[ruby] Eine Methode mit einem Argument aufrufen
Entwurfsmuster nach Ruby Template-Methode Musternotiz
[Ruby] Methode zum Zählen bestimmter Zeichen
[Ruby-Grundlagen] Split-Methode und to_s-Methode
[Ruby on Rails] Praktische Hilfsmethode
Verwendung der Ruby-Inject-Methode
Rubin lernen 4
[Ruby] Array
Java-Methode
to_i Methode
Rubin lernen 5
Ruby-Grundlagen
Java (Methode)
Ruby Review 2
Methode getRequestDispatcher ()
Rubinzusatz
Ruby on Rails-Installationsmethode [Mac Edition]
Ruby lernen 3
Implementierte "Floyd Circulation Detection Method" in Ruby
Kartenmethode
Methode einschließen
Abstrakte Methode
Ruby print setzt die Ausgabemethode p printf
Methode initialisieren
Listenmethode
setzt Methode
Ruby-Einstellung 2
Java-Methode
Klassenmethode
Rubinproblem ⑦
Save! -Methode
Ruby lernen 2
[Java] -Methode
Rubin lernen 6