【问题标题】:Ruby Meta Programming QuestionRuby 元编程问题
【发布时间】:2010-09-16 12:50:00
【问题描述】:

我正在查看 Ruby 日志记录库 Logging.logger 方法,并有一个来自 source at github 的与这段代码相关的问题:

  logger = ::Logging::Logger.new(name)
  logger.add_appenders appender
  logger.additive = false

  class << logger
    def close
      @appenders.each {|a| a.close}
      h = ::Logging::Repository.instance.instance_variable_get :@h
      h.delete(@name)
      class << self; undef :close; end
    end
  end

我知道类

【问题讨论】:

    标签: ruby metaprogramming


    【解决方案1】:

    这实际上删除了方法(当它实际执行时)。这是确保 close 不会被调用两次的保障措施。看起来有嵌套的 'class

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多