[perldocjp-cvs 1578] CVS update: docs/modules/fields-2.14

Back to archive index

argra****@users***** argra****@users*****
2012年 10月 10日 (水) 03:42:00 JST


Index: docs/modules/fields-2.14/fields.pod
diff -u /dev/null docs/modules/fields-2.14/fields.pod:1.1
--- /dev/null	Wed Oct 10 03:42:00 2012
+++ docs/modules/fields-2.14/fields.pod	Wed Oct 10 03:42:00 2012
@@ -0,0 +1,330 @@
+
+=encoding euc-jp
+
+=head1 NAME
+
+=begin original
+
+fields - compile-time class fields
+
+=end original
+
+fields - コンパイル時のクラスフィールド
+
+=head1 SYNOPSIS
+
+    {
+        package Foo;
+        use fields qw(foo bar _Foo_private);
+        sub new {
+            my Foo $self = shift;
+            unless (ref $self) {
+                $self = fields::new($self);
+                $self->{_Foo_private} = "this is Foo's secret";
+            }
+            $self->{foo} = 10;
+            $self->{bar} = 20;
+            return $self;
+        }
+    }
+
+    my $var = Foo->new;
+    $var->{foo} = 42;
+
+    # this will generate an error
+    $var->{zap} = 42;
+
+    # subclassing
+    {
+        package Bar;
+        use base 'Foo';
+        use fields qw(baz _Bar_private);        # not shared with Foo
+        sub new {
+            my $class = shift;
+            my $self = fields::new($class);
+            $self->SUPER::new();                # init base fields
+            $self->{baz} = 10;                  # init own fields
+            $self->{_Bar_private} = "this is Bar's secret";
+            return $self;
+        }
+    }
+
+=head1 DESCRIPTION
+
+=begin original
+
+The C<fields> pragma enables compile-time verified class fields.
+
+=end original
+
+The C<fields> pragma enables compile-time verified class fields.
+(TBT)
+
+=begin original
+
+NOTE: The current implementation keeps the declared fields in the %FIELDS
+hash of the calling package, but this may change in future versions.
+Do B<not> update the %FIELDS hash directly, because it must be created
+at compile-time for it to be fully useful, as is done by this pragma.
+
+=end original
+
+NOTE: The current implementation keeps the declared fields in the %FIELDS
+hash of the calling package, but this may change in future versions.
+Do B<not> update the %FIELDS hash directly, because it must be created
+at compile-time for it to be fully useful, as is done by this pragma.
+(TBT)
+
+=begin original
+
+B<Only valid for perl before 5.9.0:>
+
+=end original
+
+B<Only valid for perl before 5.9.0:>
+(TBT)
+
+=begin original
+
+If a typed lexical variable holding a reference is used to access a
+hash element and a package with the same name as the type has
+declared class fields using this pragma, then the operation is
+turned into an array access at compile time.
+
+=end original
+
+If a typed lexical variable holding a reference is used to access a
+hash element and a package with the same name as the type has
+declared class fields using this pragma, then the operation is
+turned into an array access at compile time.
+(TBT)
+
+
+=begin original
+
+The related C<base> pragma will combine fields from base classes and any
+fields declared using the C<fields> pragma.  This enables field
+inheritance to work properly.
+
+=end original
+
+The related C<base> pragma will combine fields from base classes and any
+fields declared using the C<fields> pragma.  This enables field
+inheritance to work properly.
+(TBT)
+
+=begin original
+
+Field names that start with an underscore character are made private to
+the class and are not visible to subclasses.  Inherited fields can be
+overridden but will generate a warning if used together with the C<-w>
+switch.
+
+=end original
+
+Field names that start with an underscore character are made private to
+the class and are not visible to subclasses.  Inherited fields can be
+overridden but will generate a warning if used together with the C<-w>
+switch.
+(TBT)
+
+=begin original
+
+B<Only valid for perls before 5.9.0:>
+
+=end original
+
+B<Only valid for perls before 5.9.0:>
+(TBT)
+
+=begin original
+
+The effect of all this is that you can have objects with named
+fields which are as compact and as fast arrays to access. This only
+works as long as the objects are accessed through properly typed
+variables. If the objects are not typed, access is only checked at
+run time.
+
+=end original
+
+The effect of all this is that you can have objects with named
+fields which are as compact and as fast arrays to access. This only
+works as long as the objects are accessed through properly typed
+variables. If the objects are not typed, access is only checked at
+run time.
+(TBT)
+
+
+=begin original
+
+The following functions are supported:
+
+=end original
+
+The following functions are supported:
+(TBT)
+
+=over 4
+
+=item new
+
+=begin original
+
+B< perl before 5.9.0: > fields::new() creates and blesses a
+pseudo-hash comprised of the fields declared using the C<fields>
+pragma into the specified class.
+
+=end original
+
+B< perl before 5.9.0: > fields::new() creates and blesses a
+pseudo-hash comprised of the fields declared using the C<fields>
+pragma into the specified class.
+(TBT)
+
+=begin original
+
+B< perl 5.9.0 and higher: > fields::new() creates and blesses a
+restricted-hash comprised of the fields declared using the C<fields>
+pragma into the specified class.
+
+=end original
+
+B< perl 5.9.0 and higher: > fields::new() creates and blesses a
+restricted-hash comprised of the fields declared using the C<fields>
+pragma into the specified class.
+(TBT)
+
+=begin original
+
+This function is usable with or without pseudo-hashes.  It is the
+recommended way to construct a fields-based object.
+
+=end original
+
+This function is usable with or without pseudo-hashes.  It is the
+recommended way to construct a fields-based object.
+(TBT)
+
+=begin original
+
+This makes it possible to write a constructor like this:
+
+=end original
+
+This makes it possible to write a constructor like this:
+(TBT)
+
+    package Critter::Sounds;
+    use fields qw(cat dog bird);
+
+    sub new {
+        my $self = shift;
+        $self = fields::new($self) unless ref $self;
+        $self->{cat} = 'meow';                          # scalar element
+        @$self{'dog','bird'} = ('bark','tweet');        # slice
+        return $self;
+    }
+
+=item phash
+
+=begin original
+
+B< before perl 5.9.0: > 
+
+=end original
+
+B< before perl 5.9.0: > 
+(TBT)
+
+=begin original
+
+fields::phash() can be used to create and initialize a plain (unblessed)
+pseudo-hash.  This function should always be used instead of creating
+pseudo-hashes directly.
+
+=end original
+
+fields::phash() can be used to create and initialize a plain (unblessed)
+pseudo-hash.  This function should always be used instead of creating
+pseudo-hashes directly.
+(TBT)
+
+=begin original
+
+If the first argument is a reference to an array, the pseudo-hash will
+be created with keys from that array.  If a second argument is supplied,
+it must also be a reference to an array whose elements will be used as
+the values.  If the second array contains less elements than the first,
+the trailing elements of the pseudo-hash will not be initialized.
+This makes it particularly useful for creating a pseudo-hash from
+subroutine arguments:
+
+=end original
+
+If the first argument is a reference to an array, the pseudo-hash will
+be created with keys from that array.  If a second argument is supplied,
+it must also be a reference to an array whose elements will be used as
+the values.  If the second array contains less elements than the first,
+the trailing elements of the pseudo-hash will not be initialized.
+This makes it particularly useful for creating a pseudo-hash from
+subroutine arguments:
+(TBT)
+
+    sub dogtag {
+       my $tag = fields::phash([qw(name rank ser_num)], [@_]);
+    }
+
+=begin original
+
+fields::phash() also accepts a list of key-value pairs that will
+be used to construct the pseudo hash.  Examples:
+
+=end original
+
+fields::phash() also accepts a list of key-value pairs that will
+be used to construct the pseudo hash.  Examples:
+(TBT)
+
+    my $tag = fields::phash(name => "Joe",
+                            rank => "captain",
+                            ser_num => 42);
+
+    my $pseudohash = fields::phash(%args);
+
+=begin original
+
+B< perl 5.9.0 and higher: >
+
+=end original
+
+B< perl 5.9.0 and higher: >
+(TBT)
+
+=begin original
+
+Pseudo-hashes have been removed from Perl as of 5.10.  Consider using
+restricted hashes or fields::new() instead.  Using fields::phash()
+will cause an error.
+
+=end original
+
+Pseudo-hashes have been removed from Perl as of 5.10.  Consider using
+restricted hashes or fields::new() instead.  Using fields::phash()
+will cause an error.
+(TBT)
+
+=back
+
+=head1 SEE ALSO
+
+L<base>
+
+=begin meta
+
+Translate: SHIRAKATA Kentaro <argra****@ub32*****>
+Status: in progress
+
+=end meta
+
+=cut
+



perldocjp-cvs メーリングリストの案内
Back to archive index