Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Fetching contributors…

Cannot retrieve contributors at this time

144 lines (89 sloc) 3.705 kb
=begin pod
=TITLE class Mu
class Mu { ... }
The root of the Perl 6 type hierarchy. For the origin of the name, see
L<http://en.wikipedia.org/wiki/Mu_%28negative%29>. One can also say that
there are many undefined values in Perl 6, and C<Mu> is the I<most undefined>
value.
Note that most classes do not derive from C<Mu> directly, but rather from
L<Any>.
=head1 Methods
=head2 defined
multi sub defined(Mu) returns Bool:D
multi method defined() returns Bool:D
Returns C<False> on the type object, and C<True> otherwise.
=head2 Bool
multi sub Bool(Mu) returns Bool:D
multi method Bool() returns Bool:D
Returns C<False> on the type object, and C<True> otherwise.
=head2 Str
multi method Str() returns Str
Returns a string representation of the invocant, intended to be machine
readable.
=head2 gist
multi sub gist(Mu) returns Str
multi method gist() returns Str
Returns a string representation of the invocant, optimized for
fast recognition by humans.
The default C<gist> method in C<Mu> re-dispatches to the C<perl> method,
but many built-in classes override it to something more specific.
=head2 perl
multi sub perl(Mu) returns Str
multi method perl() returns Str
Returns a Perlish representation of the object (i.e., can usually
be reparsed to regenerate the object).
=head2 clone
method clone(*%twiddles)
Creates a shallow clone of the invocant. If named arguments are passed
to it, their values are used in every place where an attribute name matches
the name of a named argument.
=head2 new
multi method new(*%attrinit)
Default method for constructing (create + initialize) new objects
of a class. This method expects only named arguments which are then
used to initialize attributes with accessors of the same name.
Classes may provide their own C<new> method to override this default.
=head2 bless
method bless(Mu $candidate, *%attrinit) returns Mu:D
Lower-level object construction method than C<new>.
If you pass a C<Whatever> as a candidate, it creates a new object
of the same type as the invocant, and then uses the named arguments
to initialize attributes.
If you pass something other than a C<Whatever> object as a candidate,
it simply does the attribute initialization on the C<$candidate>.
In both cases, the object with the attributes initialized is returned.
You can use this method when writing custom constructors:
class Point {
has $.x;
has $.y;
multi method new($x, $y) {
self.bless(:$x, :$y);
}
}
my $p = Point.new(-1, 1);
(Though each time you write a custom constructor, remember that it makes
subclassing harder).
=head2 CREATE
method CREATE() returns Mu:D
Allocates a new object of the same type as the invocant, without
initializating any attributes.
=head2 print
multi method print() returns Bool:D
Prints value to C<$*OUT> after stringification using C<.Str> method without
newline at end.
=head2 say
multi method say() returns Bool:D
Prints value to C<$*OUT> after stringification using C<.gist> method with
newline at end.
=head2 ACCEPTS
multi method ACCEPTS(Mu:U: $other)
Performs a type check. Returns C<True> if C<$other> conforms to the invocant
(which is always a type object or failure).
This is the method that is triggered on smart-matching against type objects,
for example in C<if $var ~~ Int { ... }>.
=head2 WHICH
multi method WHICH() returns ObjAt:D
Returns an object of type L<ObjAt> which uniquely identifies the object.
Value types override this method which makes sure that two equivalent objects
return the same return value from C<WHICH>.
=end pod
Jump to Line
Something went wrong with that request. Please try again.