Почему этот метод модуля initialize
не вызывается, когда он включен в класс Temp
?Почему метод инициализации модуля не называется?
module Temp
def initialize
p "asdasd"
end
end
class Swap
include Temp
def initialize
p "m in class"
end
end
s = Swap.new
м в классе
В этом примере, поскольку область действия действительно не нужна, это работает. Но если в области экземпляра Swap необходимо вызвать метод инициализации Temp #, вы столкнетесь с проблемами. – yaauie
Вызов 'Temp.initialize' является анти-шаблоном -' super' - это правильный способ вызова метода 'initialize' суперкласса. –