[RUBY] Über singuläre Methoden

Einführung

Ich habe Rubys singuläre Methoden und singuläre Klassen als Memorandum zusammengefasst.

Singuläre Methode

In Ruby können Sie eine Methode definieren, die für ein Objekt direkt eindeutig ist. Diese Methode wird als singuläre Methode bezeichnet.

class Hoge
end

obj = Hoge.new

def obj.method1
  p 'Singuläre Methode'
end

obj.method1

# => "Singuläre Methode"

Sie sollten bestätigen können, dass method1 auf diese Weise aufgerufen wurde. Was sind die Konsequenzen eines anderen Objekts?

obj2 = Hoge.new
obj2.method1

# => undefined method `method1'

Ich habe so einen Fehler bekommen. Sie können sehen, dass es sich auch in derselben Klasse um eine für obj einzigartige Methode handelt.

Die Identität der singulären Methode

Sie können sehen, dass Sie eine Methode nicht aufrufen können, wenn es sich um ein Objekt handelt, das selbst in derselben Klasse keine singuläre Methode definiert. Um auf der sicheren Seite zu sein, verwenden wir "singleton_methods", um sicherzustellen, dass die "Hoge" -Klasse keine singulären Klassen hat.

class Hoge
end

obj = Hoge.new

def obj.method1
  p 'Singuläre Methode'
end

p Hoge.singleton_methods
p obj.singleton_methods

# => []
# => [:method1]

Wenn eine Methode jedoch zu einer Klasse gehört, fragen Sie sich möglicherweise, zu welcher Klasse die singuläre Methode gehört. Als Ergebnis der Untersuchung scheint es eine ** singuläre Klasse ** zu geben, und die singuläre Methode gehört zu dieser Klasse.

Einzelunterricht

Um ehrlich zu sein, verstehe ich nur, dass singuläre Klassen singuläre Methoden definieren. Lassen Sie uns den Inhalt mit "Vorfahren" überprüfen.

p obj.singleton_class.ancestors

# => [#<Class:#<Hoge:0x00007fca5c866ab8>>, Hoge, Object, Kernel, BasicObject]

Auf diese Weise ist die Superklasse der Singularklasse wie Ihre eigene Klasse. Es scheint, dass die Methodensuche in der Reihenfolge Singularklasse → Eigene Klasse → Superklasse ist ....

Recommended Posts

Über singuläre Methoden
Über die Methode von HttpServlet ()
Über Ruby-Methoden
Informationen zu Ruby-Instanzmethoden
Informationen zum Aufrufen von Instanzmethoden
Informationen zu Validierungsmethoden in JUnit
Informationen zum Benennen von Rails-Modellmethoden
Über die Zupfmethode und die ID-Methode
Über =
Java-Klasse Variable Klassenmethode
[Ruby] Singuläre Methoden und singuläre Klassen
Über häufig verwendete Methoden in der Entwicklung
Informationen zu statischen und nicht statischen Java-Methoden
Informationen zu den Methoden equals () und hashcode ()
[Für unsere Neulinge] Über isXXX-Methoden
Über method.invoke
Über Kotlin
Über Hinemos
Java-Methoden
Über die Vererbung
Über Docker
Über Schienen 6
Über Aufzählung
Über Polymorphismus
Über Optional
Über Hash
Über JitPack
Darüber ()
Java-Methoden
Über die Kapselung
Über JAVA_HOME
Über statische
Über Ausnahmen
Über den Umfang
[Maven] Über Maven
Informationen zu regulären Ruby-Ausdrücken (Metazeichen, Captures, verwandte Methoden)