可变范围和可见性

类变量在类层次结构中共享。这可能导致令人惊讶的行为。

class A
  @@variable = :x

  def self.variable
    @@variable
  end
end

class B < A
  @@variable = :y
end

A.variable  # :y

类是对象,因此实例变量可用于提供特定于每个类的状态。

class A
  @variable = :x

  def self.variable
    @variable
  end
end

class B < A
  @variable = :y
end

A.variable  # :x