Top Level Constant in Ruby

调用顶级常量

顶级常量在Object中定义,使用::Constant_Name调用,等同于Object::Constant_Name

命名空间的坑

class Cluster
  class Array
    def initialize(n)
      # 此处想使用原始Array,
      @disks = Array.new(n) {|i| "disk#{i}"}
      # Oops, wrong Array! SystemStackError!
    end
  end
end

此处想使用原始Array,但使用到的确是Cluster::Array,解决办法就是加上限定符号::

class Cluster
  class Array
    def initialize(n)
      @disks = ::Array.new(n) {|i| "disk#{i}"}
    end
  end
end