InhaltsverzeichnisKlicke auf den Link, um zur gewünschten Stelle zu navigieren
Dieser Inhalt wurde automatisch aus dem Ukrainischen übersetzt.
is_a?, kind_of?, und instance_of? in Ruby überprüfen den Typ eines Objekts, jedoch mit unterschiedlicher Tiefe.
is_a? und kind_of?
Sie sind äquivalent - beide überprüfen, ob ein Objekt eine Instanz einer bestimmten Klasse oder deren Nachkommen ist.
class Animal; end class Dog < Animal; end dog = Dog.new dog.is_a?(Dog) # true dog.is_a?(Animal) # true - weil Dog < Animal dog.kind_of?(Animal) # true - dasselbe
instance_of?
Überprüft die genaue Klasse, ohne Vererbung.
dog.instance_of?(Dog) # true dog.instance_of?(Animal) # false — weil es ein Nachkomme ist, nicht die Klasse selbst
Kurz gesagt:
is_a? und kind_of? - überprüfen die Vererbungskette
instance_of? - überprüft nur die spezifische Klasse
Dieser Beitrag hat noch keine Ergänzungen vom Autor.