Ruby Verrücktheit: Klasse vs Objekt?

Ich habe gerade angefangen zu spielen mit JRuby. Dies ist mein erstes ruby-post. Ich hatte eine harte Zeit zu verstehen, Klassen vs. Objekte in Ruby. Es bedeutet nicht, dass wie welche Klassen & Objekte, die in anderen objektorientierten Sprachen. ein Beispiel für

Class.is_a? Object

gibt wahr
und

Object.is_a? Object

zu.

so Klasse & Objekt sind beide Objekte

hier kommt ein weiteres

Class.is_a? Class

gibt wahr
und

Object.is_a? Class

zu.

warten, ich bin noch nicht fertig

 Object.instance_of? Class
 Class.instance_of? Class

Beide wahr sind

 Object.instance_of? Object
 Class.instance_of? Object

Beide sind falsch. richtig, nichts kann die Instanz des Objekts.

Und

 Class.kind_of? Class
 Object.kind_of? Class

beide wahr sind

 Class.kind_of? Object
 Object.kind_of? Object

beide wahr sind

Also beide sind genau die gleichen, warum dann nicht wir haben diese beiden.?

Nach etwas mehr Graben, schrieb ich diese einfache Methode, um die return-Methode, Liste unterstützt sowohl

irb(main):054:0> def print_methods(obj)
irb(main):055:1>    obj.methods.each do |mm|
irb(main):056:2*        puts mm
irb(main):057:2>    end
irb(main):058:1> end

Einzige Methode Differenz zwischen zeige_methoden(Objekt) und zeige_methoden(Klasse) ist

     Nesting

wenn Verschachtelung bedeutet Vererbung, Objekt Ist ähnlich wie die geschlossene Klasse??

Kann jemand klären Sie mich, was ist das?

Update: Zu Edds Kommentar

Interessanterweise sehe ich viele Unterschiede in der Methode-Liste in

c=Class.new
print_methods(c)

&

o=Object.new
print_methods(o)

Jetzt verstehe ich die Instanz einer Klasse ist wirklich eine Instanz der Klasse (Und Klasse-Instanz-ist eigentlich ein Objekt) kein Objekt-Instanz. Und auch diese Instanz erlauben Sie mir, span weiteren Instanzen

  xx = c.new //works - c is an Object / and xx is a instance of an Object c
  yy = o.new //nope  - o is already a instance of an Object, so it cannot be instantiated again

Also Endlich, Objekt ist eine Instanz einer Klasse. Da

  xx.is_a? Class 

falsch ist, aber

  xx.is_a? Object 

gibt true zurück,

Bin ich rechts ??

  • +1: für eine gute deduktiven Fähigkeiten
  • Ich kann wärmstens empfehlen die Pickel-Behandlung zu diesem Thema: ruby-doc.org/docs/ProgrammingRuby/html/classes.html
  • danke Kumpel.. werde schauen.. 🙂
  • Es ist auch erwähnenswert, dass Ihr Graben so weit angeschaut hat Methoden der Klasse Object und die Klasse, die ähnlich sind, aber nicht auf die Instanz-Methoden. Eine Instanz der Klasse hat eine Reihe von Methoden, die eine Instanz des Objekts nicht haben. Wenn Sie über eine kurze Erklärung wäre es sehr interessant zu hören!
  • ich habe meinen Beitrag aktualisiert, überprüfen Sie bitte aus..
  • Um finde den Unterschied in den Methoden, die es einfacher zu verwenden, so etwas wie Klasse.Methoden - Objekt.Methoden .
  • "So Endlich, Objekt ist eine Instanz einer Klasse." - Ja. Object in ruby ist Analog zu java.lang.Object.class in Java.

InformationsquelleAutor RameshVel | 2011-02-11
Schreibe einen Kommentar