2011-08-30 2 views

Répondre

4
A = Class.new 

Ceci est similaire à:

class A 
end 

Comme vous définissez une classe vide et en lui donnant le nom A. (NB: Dans Ruby la convention est que les identifiants commençant par une lettre majuscule sont des constantes.)

class << A 
    def speak 
    puts "Dave" 
    end 
end 

est similaire à:

class A 
    def A.speak 
    puts "Dave" 
    end 
end 

Ici, vous définissez une méthode de classe sur A (par opposition à une méthode d'instance).

La ligne:

A.speak 

appelle simplement la méthode de classe.

Enfin:

B = A.new 

crée une instance de la classe A et en attribuant à la B constante.


Pour répondre à votre autre question. La classe de Class est ... Class! Vous pouvez voir ceci dans irb:

irb(main):022:0> Class.class 
=> Class 
+0

Alors qu'est-ce que A? un objet ou une classe? – pankajdoharey

+0

Les classes Ruby sont également des objets. Donc c'est les deux. – jergason

+0

Jergason est correct. 'A' est une classe, vous pouvez aussi dire que c'est un objet dont la classe est' Class', ou que c'est une instance de la classe 'Class'. Ce n'est pas une instance de la classe 'A', mais' B' est une instance de la classe 'A'. De plus, 'B' n'est pas une classe, mais un objet. –

Questions connexes