variables statiques dans ruby

Je viens d’apprendre sur les variables statiques en php. Y a-t-il quelque chose comme ça dans Ruby?

Par exemple, si nous voulons créer une classe Student et pour chaque object student nous créons, son numéro d’identification devrait être automatiquement incrémenté.

Je pensais que créer une variable de classe en tant que statique ferait l’affaire.

Les variables de classe sont partagées entre toutes les instances (c’est pourquoi elles sont appelées variables de classe), elles feront donc ce que vous voulez. Ils sont également hérités, ce qui conduit parfois à un comportement plutôt confus, mais je ne pense pas que ce sera un problème ici. Voici un exemple de classe qui utilise une variable de classe pour compter le nombre d’instances de celle-ci créées:

 class Foo @@foos = 0 def initialize @@foos += 1 end def self.number_of_foos @@foos end end Foo.new Foo.new Foo.number_of_foos #=> 2 

Utiliser la réponse acceptée comme définition de la variable statique peut être dangereux et c’est une erreur commune que j’ai vue dans beaucoup de code Ruby.

Quelque chose comme @@foos est partagé entre toutes les sous-classes. Cependant, la plupart des programmeurs s’attendent à ce que les variables statiques aient une scope uniquement dans la classe où elles sont définies.

Si vous recherchez des variables statiques au sens de la plupart des langages, où leur scope n’est que leur propre classe, regardez cette réponse SO

Ce billet de blog est un bon exemple de la surprise que la plupart des programmeurs obtiendront:

http://www.railstips.org/blog/archives/2006/11/18/class-and-instance-variables-in-ruby/