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
Alors qu'est-ce que A? un objet ou une classe? – pankajdoharey
Les classes Ruby sont également des objets. Donc c'est les deux. – jergason
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. –