サンプルコード
module Cuteness
end
module SoulGem
end
class Girl
include Cuteness
end
class MagicalGirl < Girl
include SoulGem
end
判断方法
注意
- 各方法の「イケてる度」と「意外度」は、僕の独断と偏見に基づいています。
- それぞれの方法で行っていることは、必ずしも等価とは限りません。
方法 1
イケてる度 :
意外度 :
Module#ancestors と Array#include? を使う。
MagicalGirl.ancestors
#=> [MagicalGirl, SoulGem, Girl, Cuteness, Object, PP::ObjectMixin, Kernel, BasicObject]
MagicalGirl.ancestors.include?(Cuteness) #=> true
MagicalGirl.ancestors.include?(SoulGem) #=> true
Girl.ancestors.include?(SoulGem) #=> false
方法 2
イケてる度 :
意外度 :
Module#included_modules と Array#include? を使う
MagicalGirl.included_modules
#=> [SoulGem, Cuteness, PP::ObjectMixin, Kernel]
MagicalGirl.included_modules.include?(Cuteness) #=> true
MagicalGirl.included_modules.include?(SoulGem) #=> true
Girl.included_modules.include?(SoulGem) #=> false
方法 3
イケてる度 :
意外度 :
Module#include? を使う。
MagicalGirl.include?(Cuteness) #=> true
MagicalGirl.include?(SoulGem) #=> true
Girl.include?(SoulGem) #=> false
方法 4
イケてる度 :
意外度 :
Module#< を使う。
MagicalGirl < Cuteness #=> true
MagicalGirl < SoulGem #=> true
Girl < SoulGem #=> nil