In Java können Sie instanceof
tun. Gibt es ein Ruby-Äquivalent?Wie überprüfe ich, ob eine Variable eine Instanz einer Klasse ist?
Antwort
Es ist fast genau das Gleiche. Sie können Object
‚s instance_of?
Methode verwenden:
"a".instance_of? String # => true
"a".instance_of? Object # => false
Ruby hat auch die is_a?
und kind_of?
Methoden (diese 2-Aliase sind, und arbeiten genau das gleiche), die true
einer der Supereinstimmungen zurückgibt:
"a".is_a? String # => true
"a".is_a? Object # => true
Ich hatte Erfolg mit klass
, die das Klassenobjekt zurückgibt. Dies scheint Rails-spezifisch zu sein.
Verwendungsbeispiel:
class Foo
end
Foo.new.klass
# => Foo
Foo.new.klass == Foo
# => true
Foo.new.klass == "Foo"
# => false
Es ist auch ein Verfahren, das diese erreicht: Object.is_a?
, die das Klassenobjekt als Argument und liefert true, wenn self
eine Instanz der Klasse oder eine Instanz einer Unterklasse ist .
Es gibt eine Methode 'Object # class': http://apidock.com/ruby/Object/class –
Ich wünschte, ich könnte zwei richtige Antworten auswählen. Array hat keine Klasse als Methode, aber es hat instance_of, aber aktive_record-abjekte haben .klasse, denke ich. – NullVoxPopuli
'Array.class' sollte genauso gut funktionieren. Ich bin in meine Antwort verwickelt worden, weil die Bibliothek, die ich verwende, die Klasse 'Object' mit der Methode' class' erweitert. –
Schauen Sie sich die Methoden instance_of?
und kind_of?
an. Hier ist der Doc Link http://ruby-doc.org/core/classes/Object.html#M000372
Ich würde versuchen, is_a? auch. –
kind_of?
und is_a?
sind auch. Sie sind Rubys Äquivalent zu Javas instanceof
.
instance_of?
unterscheidet sich darin, dass es nur true
zurückgibt, wenn das Objekt eine Instanz dieser exakten Klasse und keine Unterklasse ist.
- 1. Wie überprüfe ich, ob nicht eine Instanz einer Klasse in symfony2 ist?
- 2. Wie überprüfe ich in Activiti, ob eine Variable gesetzt ist?
- 3. Wie überprüfe ich, ob eine Variable in Swift deklariert ist?
- 4. Wissen, ob eine Variable eine Instanz einer Klasse oder einer Struktur ist
- 5. Wie überprüfe ich, ob eine Variable wirklich antwortet_to: dup?
- 6. Wie überprüfe ich, ob eine Variable in eex existiert?
- 7. Wie überprüfe ich in Python, ob eine Variable existiert?
- 8. Wie erstelle ich eine Instanz einer Klasse?
- 9. überprüfen, ob Element eine Instanz einer generischen Klasse ist
- 10. Überprüfen Sie, ob ein Objekt eine Instanz einer Klasse ist (aber nicht eine Instanz seiner Unterklasse)
- 11. Wie überprüfe ich, ob eine IsolatedStorageFile existiert?
- 12. Wie überprüfe ich, ob eine Region ein Kreis ist?
- 13. Wie überprüfe ich, ob eine Datei in einer Fernbedienung existiert?
- 14. Blueprint: Wie überprüfe ich, ob eine optionale Abhängigkeit erfüllt ist?
- 15. Wie überprüfe ich, ob eine Austauschverbindung gültig ist? (via ews)
- 16. Wie überprüfe ich, ob eine PHP-Sitzung leer ist?
- 17. Wie überprüfe ich, ob eine Umgebungsvariable in PHP gesetzt ist?
- 18. Wie überprüfe ich, ob eine FormData-Datei leer ist?
- 19. Wie überprüfe ich, ob eine Liste sortiert ist?
- 20. Wie überprüft man, ob eine Unterklasse zur Laufzeit eine Instanz einer Klasse ist?
- 21. Prüfen, ob eine AnyClass-Variable eine Erweiterung oder Implementierung einer Klasse ist
- 22. Wie überprüfe ich, ob eine Nummer eine Permutation einer anderen Nummer ist?
- 23. Wie bekomme ich eine Instanz einer bestimmten Klasse in PHP?
- 24. Wie erstellt C# eine Instanz einer Klasse?
- 25. Wie überprüfe ich, ob eine Variable eine Schnittstelle in clojure implementiert?
- 26. Wie kann ich eine Instanz einer aufrufbaren Klasse dekorieren?
- 27. PHP Eine Instanz einer Klasse an eine andere Klasse übergeben
- 28. Wie überprüfe ich, ob ich eine Datei löschen kann?
- 29. Wie überprüfe ich, ob eine Javascript-Klasse eine andere erbt (ohne ein Obj zu erstellen)?
- 30. Wie kann ich eine neue Instanz einer Klasse erstellen?
N.B. Soweit ich weiß, gibt dies false zurück, wenn "self" eine Instanz einer Unterklasse des Arguments ist. –