2013-01-14 132 views
2

我想找出哪些模塊包含在特定的類中,但不包括其祖先。例如: -如何知道某個類中包含了哪些模塊

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多少模塊包括。

回答

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] 
+0

或'p B.included_modules - B.superclass。 included_modules' :) – BernardK

+0

@BernardK:'如果'你知道A是....'else' :) –

相關問題