O'Reilly logo

Perl 6 and Parrot Essentials, Second Edition by Leopold Tötsch, Dan Sugalski, Allison Randal

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

Classes

Classes are the “cookie cutters” that build objects. Just as a module groups subroutines in a package, a class groups methods in a package. Classes can also contain subroutines, submethods, and multimethods. However, classes are significantly different from modules, primarily because they construct objects. Objects don’t just define functionality, they also hold data. In Perl 5 objects were simply hashes (or arrays, or . . . ) bestowed with special powers by bless. Perl 6 objects can still be simple blessed data structures, but the default is now an object that hides the details of its internal representation—a true opaque object.

Attributes

Attributes are the data at the core of an opaque object. Other languages have called them instance variables, data members, or instance attributes. Attributes are declared with the has keyword, and generally have a “.” after the sigil:

class Heart::Gold {
    has int $.length;
    has int $.height is rw;
    has @.cargo;
    has %.crew;
    ...
}

Attributes aren’t directly accessible outside the class, but inside the class they act just like ordinary variables:

print $.length;
$.length = 140;

Attributes also automatically generate their own accessor method with the same name as the attribute. Accessor methods are accessible inside or outside the class. By default, accessors are read-only, but the is rw property marks an accessor as read/write.

$value = $obj.height; # returns the value of $.height
$obj.height = 90;     # sets the value of $.height

Methods

Methods ...

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, interactive tutorials, and more.

Start Free Trial

No credit card required