Wie kann ich eine Klasse ohne Instanzmethoden erstellen? Nicht einmal __send__
oder __id__
.Erstellen Sie eine Klasse ohne Instanzmethoden in Ruby
Antwort
können Sie Module#undef_method
verwenden Methoden undefine:
class Foo < BasicObject
instance_methods.each { |method| undef_method(method) }
end
Foo.instance_methods #=> []
foo = Foo.new
foo.__id__ #=> NoMethodError: undefined method `__id__' for #<Foo:0x007fb9da565dd8>
foo.__send__(:test) #=> NoMethodError: undefined method `__send__' for #<Foo:0x007fb9da565dd8>
In diesem Beispiel Foo
erbt von BasicObject
, weil diese Klasse selbst definiert nur sehr wenige Instanzmethoden hat und somit undefining sie schneller ist. Dies ist nicht obligatorisch, was bedeutet, dass Sie Instanzmethoden von jeder Klasse unabhängig von der Klasse deklinieren können, so dass es sehr gut geschrieben werden könnte:
Ich habe das nicht versucht, aber wenn das funktioniert und alle Methoden entfernt werden, dann muss 'undef_method' die letzte sein, die undefiniert ist. Es muss sich selbst definieren. Sind Sie sicher, dass dies der Fall ist? – sawa
@sawa, 'undef_method' ist eine (private) Klassenmethode, daher wird sie nicht entfernt. Willkommen zurück. –
@CarySwoveland Warum wird es nicht entfernt, wenn es privat ist? Nicht so häufig wie zuvor, aber ich bin gelegentlich unterwegs, besonders wenn ich das Gefühl habe, dass sich mein Ranking ändern könnte. – sawa
- 1. Erstellen von len() mit Instanzmethoden
- 2. So erstellen Sie eine Klasse ohne Standardkonstruktor
- 3. Ruby: 'neu' ohne Klasse
- 4. Erstellen Sie eine Doktrin-Repository-Klasse ohne eine Entität
- 5. Ruby: Kann ich Instanzmethoden innerhalb einer Klassenmethode verwenden?
- 6. Erstellen Sie eine Testumgebungsdatenbank in Ruby
- 7. Erstellen einer Ruby-Klasse im laufenden Betrieb ohne Eval
- 8. Wie erstellen Sie eine benutzerdefinierte Unterklasse von IO in Ruby?
- 9. Ruby-Instanzmethoden aus einem String und einem Block
- 10. Wie man richtig eine Unterklasse in Ruby
- 11. Wie erbt eine Ruby-Klasse von der Klasse Object
- 12. Liste der Instanzmethoden der aktuellen Klasse nur
- 13. PHP erstellen Objekt ohne Klasse
- 14. Wie erstellen Sie eine Klasse in Wollok?
- 15. Erstellen Sie eine Skeleton-Klasse in Eclipse
- 16. Ruby-Methodenaufrufe in der Klasse Körper erklärten
- 17. Kann eine Ruby-Klasse instanziiert werden, ohne initialize aufzurufen?
- 18. Wann ist eine Ruby-Klasse nicht diese Ruby-Klasse?
- 19. Statische Variablen in Instanzmethoden
- 20. Ruby rspec Mocking eine Klasse
- 21. Klasse Dir. Ein Objekt erstellen. Ruby
- 22. Dynamische Ruby-Klasse mit ActiveRecord-Verbindung erstellen
- 23. Lokale Variablen für eine Klasse in Ruby
- 24. Führen Sie eine Java-Klasse ohne Paketstruktur
- 25. Erhalten Sie eine Klasse mit Namen in Ruby?
- 26. Erstellen Sie eine PHP-Klasse -> Erstellen Sie ein Objekt davon in einer anderen Klasse
- 27. Objective-C: Klassen- gegen Instanzmethoden?
- 28. Finden Sie alle Links * ohne * eine Klasse
- 29. implementieren Sie eine Schiene Before_filter in Ruby ohne Schienen
- 30. Warum Modul außerhalb der Klasse enthalten fügt Instanzmethoden zur Klasse der Objekte
Warum möchten Sie das tun? Was versuchst du zu erreichen? – akuhn
Was ist praktisch, wenn man so etwas macht? Es ist sehr unklar, was Sie erreichen möchten. – Makoto
@ Makoto warum sollte man sich um die Praktikabilität kümmern? Wenn ich etwas google, stolpere ich nie über Google und sage: "Hey, warum würdest du wissen wollen, ob es meine Suche gibt **. Bist du sicher, dass du das wissen willst?" –