GSP
Quick Navigator

Search Site

Unix VPS
A - Starter
B - Basic
C - Preferred
D - Commercial
MPS - Dedicated
Previous VPSs
* Sign Up! *

Support
Contact Us
Online Help
Handbooks
Domain Status
Man Pages

FAQ
Virtual Servers
Pricing
Billing
Technical

Network
Facilities
Connectivity
Topology Map

Miscellaneous
Server Agreement
Year 2038
Credits
 

USA Flag

 

 

Man Pages


Manual Reference Pages  -  DATA::OBJECT::ROLE::CODE (3)

.ds Aq ’

NAME

Data::Object::Role::Code - Code Object Role for Perl 5

CONTENTS

VERSION

version 0.59

SYNOPSIS



    use Data::Object::Class;

    with Data::Object::Role::Code;



DESCRIPTION

Data::Object::Role::Code provides routines for operating on Perl 5 code references.

CODIFICATION

Certain methods provided by the this module support codification, a process which converts a string argument into a code reference which can be used to supply a callback to the method called. A codified string can access its arguments by using variable names which correspond to letters in the alphabet which represent the position in the argument list. For example:



    $code->example($a + $b * $c, 100);

    # if the example method does not supply any arguments automatically then
    # the variable $a would be assigned the user-supplied value of 100,
    # however, if the example method supplies two arguments automatically then
    # those arugments would be assigned to the variables $a and $b whereas $c
    # would be assigned the user-supplied value of 100

    # e.g.

    $code->conjoin($code->(123));

    # etc



Any place a codified string is accepted, a coderef or Data::Object::Code object is also valid. Arguments are passed through the usual @_ list.

METHODS

    call



    # given sub { (shift // 0) + 1 }

    $code->call; # 1
    $code->call(0); # 1
    $code->call(1); # 2
    $code->call(2); # 3



The call method executes and returns the result of the code. This method returns a data type object to be determined after execution.

    compose



    # given sub { [@_] }

    $code = $code->compose($code, 1,2,3);
    $code->(4,5,6); # [[1,2,3,4,5,6]]

    # this can be confusing, heres whats really happening:
    my $listing = sub {[@_]}; # produces an arrayref of args
    $listing->($listing->(@args)); # produces a listing within a listing
    [[@args]] # the result



The compose method creates a code reference which executes the first argument (another code reference) using the result from executing the code as it’s argument, and returns a code reference which executes the created code reference passing it the remaining arguments when executed. This method returns a code object.

    conjoin



    # given sub { $_[0] % 2 }

    $code = $code->conjoin(sub { 1 });
    $code->(0); # 0
    $code->(1); # 1
    $code->(2); # 0
    $code->(3); # 1
    $code->(4); # 0



The conjoin method creates a code reference which execute the code and the argument in a logical AND operation having the code as the lvalue and the argument as the rvalue. This method returns a code value.

    curry



    # given sub { [@_] }

    $code = $code->curry(1,2,3);
    $code->(4,5,6); # [1,2,3,4,5,6]



The curry method returns a code reference which executes the code passing it the arguments and any additional parameters when executed. This method returns a code object.

    data



    # given $code

    $code->data; # original value



The data method returns the original and underlying value contained by the object. This method is an alias to the detract method.

    defined



    # given $code

    $code->defined; # 1



The defined method returns true if the object represents a value that meets the criteria for being defined, otherwise it returns false. This method returns a number object.

    detract



    # given $code

    $code->detract; # original value



The detract method returns the original and underlying value contained by the object.

    disjoin



    # given sub { $_[0] % 2 }

    $code = $code->disjoin(sub { -1 });
    $code->(0); # -1
    $code->(1); #  1
    $code->(2); # -1
    $code->(3); #  1
    $code->(4); # -1



The disjoin method creates a code reference which execute the code and the argument in a logical OR operation having the code as the lvalue and the argument as the rvalue. This method returns a code value.

    dump



    # given $code

    $code->dump; # sub { package Data::Object; goto \\&{\$data}; }



The dump method returns returns a string representation of the object. This method returns a string value.

    methods



    # given $code

    $code->methods;



The methods method returns the list of methods attached to object. This method returns an array value.

    new



    # given sub { shift + 1 }

    my $code = Data::Object::Code->new(sub { shift + 1 });



The new method expects a code reference and returns a new class instance.

    next



    $code->next;



The next method is an alias to the call method. The naming is especially useful (i.e. helps with readability) when used with closure-based iterators. This method returns a code value. This method is an alias to the call method.

    rcurry



    # given sub { [@_] }

    $code = $code->rcurry(1,2,3);
    $code->(4,5,6); # [4,5,6,1,2,3]



The rcurry method returns a code reference which executes the code passing it the any additional parameters and any arguments when executed. This method returns a code value.

    roles



    # given $code

    $code->roles;



The roles method returns the list of roles attached to object. This method returns an array value.

    throw



    # given $code

    $code->throw;



The throw method terminates the program using the core die keyword, passing the object to the Data::Object::Exception class as the named parameter object. If captured this method returns an exception value.

    type



    # given $code

    $code->type; # CODE



The type method returns a string representing the internal data type object name. This method returns a string value.

ROLES

This package is comprised of the following roles.
o Data::Object::Role::Defined
o Data::Object::Role::Detract
o Data::Object::Role::Dumper
o Data::Object::Role::Item
o Data::Object::Role::Throwable
o Data::Object::Role::Type

SEE ALSO

o Data::Object::Array
o Data::Object::Class
o Data::Object::Class::Syntax
o Data::Object::Code
o Data::Object::Float
o Data::Object::Hash
o Data::Object::Integer
o Data::Object::Number
o Data::Object::Role
o Data::Object::Role::Syntax
o Data::Object::Regexp
o Data::Object::Scalar
o Data::Object::String
o Data::Object::Undef
o Data::Object::Universal
o Data::Object::Autobox
o Data::Object::Immutable
o Data::Object::Library
o Data::Object::Prototype
o Data::Object::Signatures

AUTHOR

Al Newkirk <anewkirk@ana.io>

COPYRIGHT AND LICENSE

This software is copyright (c) 2014 by Al Newkirk.

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

Search for    or go to Top of page |  Section 3 |  Main Index


perl v5.20.3 DATA::OBJECT::ROLE::CODE (3) 2015-11-29

Powered by GSP Visit the GSP FreeBSD Man Page Interface.
Output converted with manServer 1.07.