假设我有
module A
include module B
class C
def methodC
B.methodB
end
def self.methodD
somemethod
end
end
end
module B
def self.methodB
A::C.methodD
end
end
instance = A::C.new
如何避免使用此类级别方法(自我)?实际上,我如何在methodB
上致电instance
?
答案 0 :(得分:1)
如果我很好理解,在某个方法中调用当前实例的关键字是self
。所以你可以使用
def methodC
self.methodB
end
并删除self
内的self.methodB
。
(顺便说一句,除非methodD
必须在class C
内找到,否则您可以将其放在moduleB
内,然后删除A::C
的{{1}};))
答案 1 :(得分:0)
试试这个
# define moduke B first so that, it can be included in A
module B
def methodB
A::C.methodD
end
end
module A
class C
include B # include B here
def methodC
methodB
end
def self.methodD
somemethod
end
end
end
instance = A::C.new
p instance.methods.grep /methodB/
=> [:methodB]