Является ли метод инициализации (конструктор) закрытым или общедоступным в ruby?
Инициализация класса Ruby (конструктор) - это частный метод или общедоступный метод?
Ответ 1
Посмотрим:
class Test
def initialize; end
end
p Test.new.private_methods.sort.include?(:initialize)
Отпечатает true
, поэтому initialize
- частный метод. Это имеет смысл, оно вызывается только методом класса new
, если объект создан. Если мы хотим, мы можем сделать что-то вроде этого:
class Test
def initialize
@counter = 0
end
def reset!
initialize
end
end
Неправильное использование конструктора, подобного этому, может привести к проблемам, если оно делает больше, чем простая инициализация переменных.
Ответ 2
Метод initialize
в классе автоматически становится приватным.
Вы можете проверить это, используя:
puts ClassName.private_methods.sort