Перевод официальной документации Perl 6.

Отличия между Perl 5 и Perl 6 (часть 2).

| 0 Comments | 0 TrackBacks

Привет, сегодня продолжаю перевод документа Perl6::Perl5::Differences.


Perl6::Perl5::Differences - Отличия между Perl 5 и Perl 6

Операторы

Полный список операторов задокументирован на страницах [S03]: "Изменения синтаксиса операторов Perl 5" и [S03]: "Новые операторы".

Некоторые ключевые аспекты:

Новая форма интерполяции оператора кавычек qw()

    Было:    qw(foo)
    Стало:   <foo>

    Было:    ("foo", (split ' '$bar), "bat")
    Стало:   <<foo $bar bat>>

Операторы кавычек теперь имеют модификаторы, которые могут быть использованы для изменения их интерпретации ( подобно модификаторам регулярных выражений в Perl 5), с их помощью можно даже определить свои собственные операторы кавычек.

Обратите внимание, что подпись () теперь является вызовом подпрограммы, таким образом вместо qw(a b) надо написать qw<a b> или qw[a b] (если вам не симпатична простая запись <a b>).

Другие важные изменения в операторах

Объединение строк теперь осуществляется символом ~.

Сопоставление регулярному выражению производится оператором "умного сопоставления" - ~~, Perl 5 оператор сопоставления =~ больше не используется.

    if "abc" ~~ m/a/ { ... }

| и & как инфиксные операторы теперь объединяют конструкции. Операторы бинарный AND и бинарный OR разделены на строковые и числовые, то есть ~& - бинарный строковый AND, +& бинарный числовой AND, ~| - бинарный строковый OR и.т.д.

	Было:  $foo & 1;
	Стало: $foo +& 1;

Побитовые операторы в настоящее время с префиксом +, ~ или ? в зависимости от типа данных: число, строка или логическое значение.

	Было:  $foo << 42;
	Стало: $foo +< 42;

Операторы присваивания изменены таким же образом:

	Было:  $foo <<= 42;
	Стало: $foo +<= 42;

Скобки не создают списки, они просто группируют. Списки формируются оператором запятой. У неё приоритет выше, чем у оператора присвоения списка, это позволяет с правой стороны указывать список без скобок.

    my @list = 1, 2, 3;     # В @list на самом деле 3 элемента

Оператор стрелка -> для разыменовывания больше не используется. Так как все является объектом, а разыменовывающие скобки - это просто вызовы метода с синтаксическим сахаром, можно сразу использовать соответствующую пару скобок для индексирования либо вызова метода:

    my $aoa = [[1, 2, 3], [4, 5, 6], [7, 8, 9]];
    say $aoa[1][0];         # 4

    my $s = sub { say "hi" };
    $s();
    # или
    $s.();
    $lol.[1][0]

No TrackBacks

TrackBack URL: http://blog.perl6doc.ru/mt-tb.cgi/28

Leave a comment

About this Entry

This page contains a single entry by Dinar published on August 4, 2010 12:40 AM.

Отличия между Perl 5 и Perl 6 (часть 1). was the previous entry in this blog.

Отличия между Perl 5 и Perl 6 (часть 3). is the next entry in this blog.

Find recent content on the main index or look in the archives to find all content.