我正在查看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
我理解班级&lt;&lt; logger向logger对象打开eigen / meta / singleton类,以添加实例特定的close方法。但是,我并不完全确定“class&lt;&lt; self; undef:close; end”是什么以及出于什么目的。谁能告诉我这是什么意思?
答案 0 :(得分:11)
这实际上删除了该方法(当它实际执行时)。确保关闭不被调用两次是一种安全措施。它看起来有嵌套的'class&lt;&lt; '构造,但没有。内部类&lt;&lt;在调用方法并且外部类&lt;&lt;在定义方法时调用。