Ruby [新手] 如何理解下面这段代码 (关于 new)

kgra · 2014年03月23日 · 最后由 kgra 回复于 2014年03月23日 · 1820 次阅读

有如下代码

 class Initializer
    attr_reader :configuration

    def initialize(configuration)
      AWatir::TestRunLogger.load_logger if(ARGV.include?("-jobId"))
      @configuration = configuration
    end

    def self.run(configuration = Configuration.new)
      yield configuration if block_given?
      initializer = new configuration
      initializer.process
      initializer
    end
#其他代码

上面的 run 函数中,在执行到 initializer =new configuration 的时候,创建的是 Initializer 类的对象,还是 Configuration 类的对象。 主要是不懂 new 的用法,在 ruby 里面,直接使用 new,是指当前类吗?

Configuration 类的对象。另外建议找本基础书看看

#1 楼 @neverlandxy_naix 你确定?Configuration 类可没有 process 方法哦

#2 楼 @kgra 看错了,看成了 run 后面的那个参数了 initializer = new configuration 这行代码省略了当前 self , 也就是隐性 self 调用,创建的是 Initializer 类的对象

new 后加一行

p initializer

可以看到,应该是 Initializer。

需要 登录 后方可回复, 如果你还没有账号请 注册新账号