当前位置:  开发笔记 > 后端 > 正文

Ruby元编程问题

如何解决《Ruby元编程问题》经验,为你挑选了1个好方法。

我正在查看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"的用途和用途.谁能告诉我它意味着什么?



1> David Nehme..:

这实际上删除了该方法(当它实际执行时).确保关闭不被调用两次是一种安全措施.它看起来有嵌套的'class <<'结构,但没有.调用方法时执行内部类<< <<,当定义方法时调用外部类<<.

推荐阅读
360691894_8a5c48
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有