• Ruby или Python или может Java?

    @FoxInSox
    1C, конечно.
    Ответ написан
    Комментировать
  • В чём разница между конструктором и initialize методом в Ruby?

    omun
    @omun
    1. Руби не поддерживает методы с разными сигнатурами. Но вместо ошибки он просто принимает последнюю вычисленную. В вашем случае первый метод init затрётся вторым. Для примера поменяйте их местами и вызов A.new(1) вернёт ошибку о недостаточности аргументов.
    Корни этой проблемы тянутся из динамичности руби и отсутствия pattern matching.

    2. initialize нельзя назвать конструктором, потому что конструктором фактически является метод класса new. И вот в A.new всегда вызывается метод инстанса initialize, если он присутствует. Но это настолько незначительное замечание, что можно и initialize называть конструктором, ошибка на данном этапе не существена.

    По поводу нескольких конструкторов - вот вам шаблон:
    def initialize(*args)
      if args.length == 1
        #initialize method 1
      else
        #initialize method 2
      end
    end
    Ответ написан
    1 комментарий