Variables de classe

Les variables de classe sont associées aux classes plutôt qu'aux instances. Elles sont préfixées par deux arobases (@@). Par exemple:

class Counter
  @@instances = 0

  def initialize
    @@instances += 1
  end

  def self.instances
    @@instances
  end
end

Counter.instances #=> 0
Counter.new
Counter.new
Counter.new
Counter.instances #=> 3

Les variables de classe peuvent être accédées ou modifiées depuis les méthodes de classe d'instance.

Leur type est inféré suivant l'algorithme d'inférence de type global.

Les variables de classe sont héritées par des sous-classes avec une condition: leur type est le même, mais chaque classe possède une valeur d'exécution différente. Par exemple:

class Parent
  @@numbers = [] of Int32

  def self.numbers
    @@numbers
  end
end

class Child < Parent
end

Parent.numbers # => []
Child.numbers # => []

Parent.numbers << 1
Parent.numbers # => [1]
Child.numbers # => []

Les variables de classe peuvent aussi être associées aux modules et structs. Comme précédemment, elles ne sont pas héritées en incluant les types.

results matching ""

    No results matching ""