Вход на хостинг
IT-новости
20.04.2016 iPhone 2017 года поместят в водонепроницаемый корпус из стекла
Линейка iPhone в новом году серьезно поменяется. В этом уверен аналитический исследователь Мин Чи Ку......
30.07.2015 Ищем уникальный контент для сайта
Ищем уникальный контент для сайта Без уникального контента Ваш сайт обречен на то, что его страницы......
В документации на Perl 6 большой раздел посвящен новому синтаксису (не будет ошибкой сказать – новой идеологии) регулярных выражений. Кроме правил (regexps) теперь существуют грамматики (grammars), их объединяющие. Например, ранняя версия компилятора Perl 6, входящая в состав Parrot, при первом запуске создавала файл Perl6grammar.pm, описывающий синтаксис Perl 6, записанный в виде грамматики Perl 6. Подробное рассмотрение новых регулярных выражений требует отдельной статьи.
Классы и роли
Классы и роли – одно из самых существенных нововведений в Perl 6. Формально поддержка ООП была и в Perl 5, но «классы» являлись просто хешами с некоторыми дополнительными возможностями. Механизмы ООП в Perl 6 проще для понимания и образуют намного более стройную модель. Чтобы научиться применять классы, программистам, знакомым с другими объектными языками, достаточно познакомиться с синтаксисом, присущим Perl 6. Для определения класса служит ключевое слово «class»:
# class.p6
class Alphabet
{
}
Объекты класса создаются с помощью оператора new:
my $abc = new Alphabet;
Члены-данные объявляют, используя has. Точка перед именем является признаком того, что переменная объявляется как открытая (public в общепринятой терминологии); отсутствие точки делает ее закрытой (private):
class Alphabet
{
has $.Name;
has $Length;
}
my $abc = new Alphabet;
$abc.Name = 'Latin'; # синтаксически верно
#$abc.Length = 26; # ошибка
При создании объекта возможно инициализировать члены-данные:
my $abc = Alphabet.new(Name => 'Latin', length => 26);
say $abc.Name;
Классы могут содержать методы; они так и объявляются с ключевым словом «method»:
class Alphabet
{
has $Name;
has $Length;
method Info
{
return "Aplhabet '$.Name' contains ?
$.Length letters.";
}