【发布时间】:2020-03-05 06:06:49
【问题描述】:
我正在使用 Ruby 2.6.5 并尝试使用 def_delegator 委托给类变量。
class A
extend Forwardable
@@classB = B.new
def_delegator :@@classB, :method_name, :a_method_name
end
当我尝试执行A.new.a_method_name 时,我收到NameError (uninitialized class variable @@classB in Object)。不确定我是否错误地调用了def_delegator,或者我只是需要分解并使用 ActiveSupport 的delegate。
更新
根据可接受的答案,我的类定义如下所示:
class A
extend Forwardable
class << self
attr_accessor :classB
end
self.classB = B.new
def_delegator 'self.class.classB', :method_name, :a_method_name
end
【问题讨论】:
标签: ruby delegation