X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=moose-class%2Fslides%2Findex.html;h=72e8bbedbfcb85a3b5b06ff61c5b9996dc1caa43;hb=88ba73cb2747fd9eb409a0ce9e22188d4ecec76b;hp=7c57d21d4ae1eb31a769326c0268e7b8beeac735;hpb=cd02a58e2785ea5ff6ad393b916627181d3c5a5d;p=gitmo%2Fmoose-presentations.git diff --git a/moose-class/slides/index.html b/moose-class/slides/index.html index 7c57d21..72e8bbe 100644 --- a/moose-class/slides/index.html +++ b/moose-class/slides/index.html @@ -52,7 +52,7 @@ img#me05 {top: 43px;left: 36px;}

Introduction to Moose

-

Dave Rolsky +

Dave Rolsky

@@ -71,8 +71,8 @@ img#me05 {top: 43px;left: 36px;}
@@ -155,7 +155,7 @@ img#me05 {top: 43px;left: 36px;}
package Person;
 use Moose;
 
-has first_name => ( is => 'rw' );
+has first_name => ( is => 'ro' ); @@ -1069,7 +1069,7 @@ use Moose; @@ -1236,6 +1236,8 @@ use Moose; # perl install-moose (if needed) +## Read the instructions in t/01-classes.t + # perl bin/prove -lv t/01-classes.t # edit lib/Person.pm and lib/Employee.pm @@ -1307,23 +1309,25 @@ sub print {
package Person;
 use Moose;
 
-with 'HasPermissions';
+with 'Printable';

Classes Consume Roles

-
my $person = Person->new(
+
package Person;
+
+sub as_string { $_[0]->first_name() }
+
+...
+
+my $person = Person->new(
     first_name   => 'Kenichi',
     last_name    => 'Asai',
     access_level => 42,
 );
 
-print $person->full_name
-    . ' has '
-    . $person->can_access(42)
-        ? 'great power'
-        : 'little power';
+$person->print();
@@ -1340,7 +1344,9 @@ print $person->full_name
package Person;
 use Moose;
 
-with 'Printable';
+with 'Printable'; + +sub as_string { $_[0]->first_name() }
@@ -1351,6 +1357,8 @@ use Moose; with 'Printable'; +sub as_string { $_[0]->first_name() } + has has_been_printed => ( is => 'rw' ); sub print { @@ -1656,8 +1664,6 @@ requires 'compare';

Real Examples

-

What if I Want to Share?

- -
package Person;
-use Moose;
-
-my $highlander_bank =
-    Bank->new(
-        name => 'Clan MacLeod Trust' );
-
-has bank => (
-    is      => 'rw',
-    default => sub { $highlander_bank },
-);
-
- -

Builder

@@ -2407,62 +2390,6 @@ around run => sub {
-

Augment and Inner

- - -
- -
-

Augment and Inner

- -
package Document;
-
-sub xml { '<doc>' . inner() . '</doc>' }
-
-package Report;
-extends 'Document';
-augment xml =>
-    sub { my $self = shift;
-          $self->title() . inner() . $self->summary() };
-
-package TPSReport;
-extends 'Report';
-augment xml =>
-    sub { my $self = shift;
-          $self->tps_xml() . inner() };
-
- -
-

Augment and Inner

- - -
- -
-

Augment and Inner Usage

- - -
- -

Method Modifiers Summary

-

Method Modifiers Summary

- - -
- -

Questions?

@@ -2722,7 +2635,7 @@ class_type 'DateTime';

Subtype Shortcuts - role_type

use Moose::Util::TypeConstraints;
-role_type 'Printable';
+role_type 'Printable';
@@ -3432,7 +3345,7 @@ has account => ( isa => 'BankAccount', handles => { receive_100 => - [ 'deposit', 100 ] + [ 'deposit', 100 ], give_100 => [ 'withdraw', 100 ] }, @@ -3566,7 +3479,7 @@ Iterate til this passes all its tests @@ -3587,7 +3500,7 @@ Iterate til this passes all its tests

MooseX::Declare

use MooseX::Declare;
-use 5.10.0; # for say
+use 5.12.0; # for say
 
 class Person {
     has greeting =>
@@ -3606,7 +3519,7 @@ class Person {
     
  • Still experimental-ish, but seeing more and more use
  • Not a source filter!
  • Hooks into the Perl parser rather than filtering all your code
  • -
  • But not supported by PPI, perltidy, etc.
  • (yet?) +
  • But not supported by PPI, perltidy, etc. (yet?)