Использование нашего класса

После того как класс создан, можно создавать его экземпляры. Благодаря нашему конструктору можно просто описать задачи и их зависимости. Для создания задачи без зависимостей достаточно использовать следующий код:

    my $eat = Task.new({ say 'eating dinner. NOM!' });

Ранее рассказывалось, что после определении класса Tast появляется так называемый объект-тип. Он является своеобразным "пустым экземпляром" класса, а именно экземпляром без определенного состояния. Для него возможно вызывать какие угодно методы, кроме тех которые пытаются получить доступ к состоянию объекта ( например к свойствам ). Так new, например, создает новый объект, а не модифицирует или пытается прочесть состояние существующего объекта.

К сожалению, обеда не происходит волшебно неожиданно. Он имеет зависимые задачи:

    my $eat =
        Task.new({ say 'eating dinner. NOM!' },
            Task.new({ say 'making dinner' },
                Task.new({ say 'buying food' },
                    Task.new({ say 'making some money' }),
                    Task.new({ say 'going to the store' })
                ),
                Task.new({ say 'cleaning kitchen' })
            )
        );

Обратите внимание на уровни отступов. Такое форматирование позволяет сделать нагляднее структуру зависимостей для задач.

Наконец, вызов метода perform приводит к рекурсивному вызову методов perform для зависимых задач. В итоге на экран будет введен следующий результат:

    making some money
    going to the store
    buying food
    cleaning kitchen
    making dinner
    eating dinner. NOM!