четверг, 26 ноября 2015 г.

Inoreader - [Перевод] Особенности (traits) в Perl 6 – метаданные вместе с символом

New article from your email rule in Inoreader

Особенности (Traits) – это удобный и расширяемый способ присоединения метаданных к различным видам объектов в Perl 6. Рассмотрим пример особенности с is cached, автоматически кеширующей возвращаемое функцией значение в зависимости от переданных аргументов.

# следующий код вызывается, когда к функции  # добавляется 'is cached'   multi sub trait_mod:<is>(Routine $r, :$cached!) {       my %cache;       # обернём функцию в блок, который       $r.wrap(-> $arg {           # ищет аргумент в кеше           %cache{$arg}:exists               ?? %cache{$arg}               # ... и вызывает оригинал, если он не найден               !! (%cache{$arg} = callwith($arg))           }       );   }      # пример применения:   sub fib($x) is cached {       say("fib($x)");       $x <= 1 ?? 1 !! fib($x - 1) + fib($x - 2);   }     # для всех значений от 0 до 10 происходит лишь по одному вызову   say fib(10);  

Читать дальше →
Inoreader is a light and fast RSS Reader. Follow us on Twitter and Facebook
You have matches for "и", "в"

Комментариев нет:

Отправить комментарий