我正在使用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',:a_method_name
end