Главная > Perl > День 3: статические типы и мульти-функции

День 3: статические типы и мульти-функции

Перевод на русский язык третьей статьи из цикла Perl 6 Advent Calendar.

Пришло время открыть третью коробку с подарком. Внутри… Эй, посмотрите, похоже у нас целых два подарка! Внутри коробки статические типы и мульти-функции (multi subs).

В Perl 5, $scalar переменные могут содержать либо ссылки, либо значения. В частности, значениями может быть всё что угодно. Они могут содержать числа, строки, даты: буквально все, что вы пожелаете. Это обеспечивает определенную гибкость, но за счет ясности.

Perl 6 собирается изменить это, введя статические типы. Если вы хотите какую-либо переменную, вы просто помещаете имя типа между my и $variable-type. Например, создание переменной типа Int выглядит следующим образом:

my Int $days = 24;

Другие статические типы могут выглядеть так:

my Str $phrase = "Hello World!";
my Num $pi = 3.141;
my Rat $other_pi = 22/7;

Если вы все еще хотите использовать старое поведение переменных, вы можете не пользоваться статическими типами.

Этот подарок идет рука-об-руку со следующим подарком в коробке: мульти-функции. Что это такое «мульти-функции»? Если коротко, то мульти-функции позволяют перегрузить имена функций (sub). На самом деле мульти-функции могут делать гораздо больше, но эти подарки в другой день. А сейчас посмотрите на несколько примеров использования мульти-функций:

multi sub identify(Int $x) {
    return "$x - целое.";
}

multi sub identify(Str $x) {
    return qq<"$x" - строка.>;
}

multi sub identify(Int $x, Str $y) {
    return "Мы имеем целое $x, и строку \"$y\".";
}

multi sub identify(Str $x, Int $y) {
    return "Мы имеем строку \"$x\", и целое $y.";
}

multi sub identify(Int $x, Int $y) {
    return "Мы имеем два целых $x и $y.";
}

multi sub identify(Str $x, Str $y) {
    return "Мы имеем две строки \"$x\" и \"$y\".";
}

say identify(42);
say identify("Это круто!");
say identify(42, "Это круто!");
say identify("Это круто!", 42);
say identify("Это круто!", "Я гарантирую!");
say identify(42, 24);

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

Оригинальная статья на английском.

VN:F [1.8.4_1055]
Rating: 6.3/10 (3 votes cast)
День 3: статические типы и мульти-функции6.3103
  • Print
  • PDF
  • Google Bookmarks
  • Twitter
  • Digg
  • del.icio.us
  • Reddit
  • Facebook
  • Identi.ca
  • Slashdot
  • StumbleUpon
Categories: Perl Tags:
  1. Пока что нет комментариев.
  1. Пока что нет уведомлений.