有没有办法在Ruby中创建临时名称空间和常量?

时间:2013-01-19 00:01:30

标签: ruby oop object object-oriented-analysis

我有一个班级:

class MyClass
  def self.say_hello
    puts "hello"
  end
end

我想创建一个暂时覆盖类及其方法的进程:

begin "a temporary namespace, constants, variables and methods within this code"
  Thread.current[:neverland] = -> do
    Object.instance_exec do
      class MyClass
        def self.say_hi
          puts "hi"
        end
      end

      MyClass.say_hi
      MyClass.say_hello
    end
  end
end

> Thread.current[:neverland].call
=> "hi"
=> "hello"

> MyClass.methods - Object.methods
=> ["say_hello"]

> MyClass.say_hi
=> undefined method `say_hi' for MyClass:Class (NoMethodError)

Ruby中有这样的东西,还是我只是在做梦?命名空间无污染,临时常量,方法,命名空间,类。清晰,专注和优化的代码,没有太多干扰。

1 个答案:

答案 0 :(得分:1)

您可能正在考虑计划在Ruby 2.0中发布的Refinements之类的内容。

在此之前,你必须具有创造力。