Конструкторы

В отношении конструкторов Perl 6 является более либеральным, чем большинство языков программирования. Главное чтобы конструктор возвращал экземпляр класса. Кроме того, конструкторами в Perl 6 являются обычные методы. Любой класс наследует конструктор с именем new от базового класса Object. Этот метод new может быть переопределен, например, как в следующем коде:

    method new(&callback, Task *@dependencies) {
        return self.bless(*, :&callback, :@dependencies);
    }

В то время, как конструкторы в языках подобных C# и Java устанавливают состояние уже предварительно созданных объектов, конструкторы в Perl 6 непосредственно создают объекты. Наиболее простой путь создать объект - это вызвать метод bless, который наследуется от Object. В качестве параметров метод bless ожидает позиционный параметр, так называемого "кандидата", и набор именованных параметров с начальными значениями для каждого из атрибутов объекта.

В конструкторе из примера позиционные параметры преобразуются в именованные. Благодаря этому конструктор оказывается лаконичным и простым для использования. Первый параметр конструктора new представляет собой callback ( непосредственно действие, из которого состоит задача ). Остальными параметрами являются экземпляры класса Task. Конструктор захватывает их в массив и передает затем как именованный параметр в bless ( заметьте, что для в форме именованного параметра :&callback непосредственно имя параметра тоже что и имя переменной за вычетом сигила, т.е. callback ).