Spec-Zone .ru
спецификации, руководства, описания, API
Spec-Zone .ru
спецификации, руководства, описания, API
Библиотека разработчика Mac Разработчик
Поиск

 

Эта страница руководства для  версии 10.9 Mac OS X

Если Вы выполняете различную версию  Mac OS X, просматриваете документацию локально:

Читать страницы руководства

Страницы руководства предназначаются как справочник для людей, уже понимающих технологию.

  • Чтобы изучить, как руководство организовано или узнать о синтаксисе команды, прочитайте страницу руководства для страниц справочника (5).

  • Для получения дополнительной информации об этой технологии, ищите другую документацию в Библиотеке Разработчика Apple.

  • Для получения общей информации о записи сценариев оболочки, считайте Shell, Пишущий сценарий Учебника для начинающих.



Syntax::Keyword::Junction(3)         User Contributed Perl Documentation        Syntax::Keyword::Junction(3)



NAME
       Syntax::Keyword::Junction - Perl6 style Junction operators in Perl5

VERSION
       version 0.003001

SYNOPSIS
         use Syntax::Keyword::Junction qw/ all any none one /;

         if (any(@grant) eq 'su') {
           ...
         }

         if (all($foo, $bar) >= 10) {
           ...
         }

         if (qr/^\d+$/ == all(@answers)) {
           ...
         }

         if (all(@input) <= @limits) {
           ...
         }

         if (none(@pass) eq 'password') {
           ...
         }

         if (one(@answer) == 42) {
           ...
         }

       or if you want to rename an export, use Sub::Exporter options:

         use Syntax::Keyword::Junction any => { -as => 'robot_any' };

         if (robot_any(@grant) eq 'su') {
           ...
         }

DESCRIPTION
       This is a lightweight module which provides 'Junction' operators, the most commonly used being "any"
       and "all".

       Inspired by the Perl6 design docs, <http://dev.perl.org/perl6/doc/design/exe/E06.html>.

       Provides a limited subset of the functionality of Quantum::Superpositions, see "SEE ALSO" for
       comment.

       Notice in the "SYNOPSIS" above, that if you want to match against a regular expression, you must use
       "==" or "!=". Not "=~" or "!~". You must also use a regex object, such as "qr/\d/", not a plain regex
       such as "/\d/".

SUBROUTINES
   all()
       Returns an object which overloads the following operators:

         '<',  '<=', '>',  '>=', '==', '!=',
         'lt', 'le', 'gt', 'ge', 'eq', 'ne',
         '~~'

       Returns true only if all arguments test true according to the operator used.

   any()
       Returns an object which overloads the following operators:

         '<',  '<=', '>',  '>=', '==', '!=',
         'lt', 'le', 'gt', 'ge', 'eq', 'ne',
         '~~'

       Returns true if any argument tests true according to the operator used.

   none()
       Returns an object which overloads the following operators:

         '<',  '<=', '>',  '>=', '==', '!=',
         'lt', 'le', 'gt', 'ge', 'eq', 'ne',
         '~~'

       Returns true only if no argument tests true according to the operator used.

   one()
       Returns an object which overloads the following operators:

         '<',  '<=', '>',  '>=', '==', '!=',
         'lt', 'le', 'gt', 'ge', 'eq', 'ne',
         '~~'

       Returns true only if one and only one argument tests true according to the operator used.

ALTERING JUNCTIONS
       You cannot alter junctions.  Instead, you can create new junctions out of old junctions.  You can do
       this by calling the "values" method on a junction.

        my $numbers = any(qw/1 2 3 4 5/);
        print $numbers == 3 ? 'Yes' : 'No';   # Yes

        $numbers = any( grep { $_ != 3 } $numbers->values );
        print $numbers == 3 ? 'Yes' : 'No';   # No

       You can also use the "map" method:

        my $numbers = any(qw/1 2 3 4 5/);
        my $prime   = $numbers->map( \&is_prime );

        say for $prime->values; # prints 0, 1, 1, 0, 1

EXPORT
       'all', 'any', 'none', 'one', as requested.

       All subroutines can be called by its fully qualified name, if you don't want to export them.

         use Syntax::Keyword::Junction;

         if (Syntax::Keyword::Junction::any( @questions )) {
           ...
         }

WARNING
       When comparing against a regular expression, you must remember to use a regular expression object:
       "qr/\d/" Not "/d/". You must also use either "==" or "!=". This is because "=~" and "!~" cannot be
       overriden.

TO DO
       Add overloading for arithmetic operators, such that this works:

         $result = any(2,3,4) * 2;

         if ($result == 8) {...}

SEE ALSO
       This module is actually a fork of Perl6::Junction with very few (initial) changes.  The reason being
       that we want to avoid the incendiary name containing Perl6.

       Quantum::Superpositions provides the same functionality as this, and more. However, this module
       provides this limited functionality at a much greater runtime speed, with my benchmarks showing
       between 500% and 6000% improvment.

       <http://dev.perl.org/perl6/doc/design/exe/E06.html> - "The Wonderful World of Junctions".

AUTHORS
          Arthur Axel "fREW" Schmidt <frioux+cpan@gmail.com>

          Carl Franks

COPYRIGHT AND LICENSE
       This software is copyright (c) 2012 by Arthur Axel "fREW" Schmidt.

       This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5
       programming language system itself.



perl v5.16.2                                     2012-09-02                     Syntax::Keyword::Junction(3)

Сообщение о проблемах

Способ сообщить о проблеме с этой страницей руководства зависит от типа проблемы:

Ошибки содержания
Ошибки отчета в содержании этой документации к проекту Perl. (См. perlbug (1) для инструкций представления.)
Отчеты об ошибках
Сообщите об ошибках в функциональности описанного инструмента или API к Apple через Генератор отчетов Ошибки и к проекту Perl, использующему perlbug (1).
Форматирование проблем
Отчет, форматирующий ошибки в интерактивной версии этих страниц со ссылками на отзыв ниже.