gpt4 book ai didi

ruby - 动态添加单例方法

转载 作者:太空宇宙 更新时间:2023-11-03 17:17:01 24 4
gpt4 key购买 nike

我想定义 Logger 在模块上的方法,并将它们委托(delegate)给返回 Logger 的方法。

module MyLogger
def self.logger
# return a Logger, whatever
end

[:debug, :info, :warn, :error, :fatal] do |_method|
def self._method *args # WRONG. Want to define something named `_method` for the class
logger.send _method, *args
end
end
end

如何修复错误的行以使其正常工作?

最佳答案

module MyLogger
def self.logger *args
# return a Logger, whatever
end

[:debug, :info, :warn, :error, :fatal].each do |_method|
define_singleton_method _method do |*args|
logger.send _method, *args
end
end

end

p MyLogger.singleton_methods
# => [:logger, :debug, :info, :warn, :error, :fatal]

关于ruby - 动态添加单例方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13827169/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com