我正在查看Ruby日志库Logging.logger方法,并在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
据我所知,类<< logger打开了loginger对象的eigen/meta/singleton类来添加一个实例特定的close方法.但是,我并不完全确定"类<< self; undef:close; end"的用途和用途.谁能告诉我它意味着什么?
这实际上删除了该方法(当它实际执行时).确保关闭不被调用两次是一种安全措施.它看起来有嵌套的'class <<'结构,但没有.调用方法时执行内部类<< <<,当定义方法时调用外部类<<.