Slide 31
Slide 31 text
以下のようすでに X.include M
してる M
に対して M.include M2
をする
と X.ancestors
に M2
が反映されるようになる
module M; end
class X
include M
end
#
この時点では M
のみ反映されている
p X.ancestors
# => [X, M, Object, Kernel, BasicObject]
module M2; end
# M
に対してあとから include
したときの挙動が変わった
M.include M2
# Ruby 2.7 : M2
は反映されない
# Ruby 3.0 : M2
が反映される
p X.ancestors
# Ruby 2.7 => [X, M, Object, Kernel, BasicObject]
# Ruby 3.0 => [X, M, M2, Object, Kernel, BasicObject]