我想找到包含在特定类中的模块,不包括它的祖先。 E.g:
module M; end
module N; end
class A; include M; end
class B < A; include N; end
p B.included_modules
#=> [N, M, Kernel]
# I want only N
我无法使用B.included_modules[0]
,因为我不知道B
包含了多少个模块。
答案 0 :(得分:3)
如果你知道A是B的超类,那么
p B.included_modules - A.included_modules
应该为您提供您正在寻找的内容
p B.included_modules - B.superclass.included_modules
module M; end
module N; end
module O; end
class A; include M; end
class B < A; include N; include O; end
p B.included_modules - A.included_modules
#=> [O, N]