-2

私はストロベリーパール、ムース2.0010を使用しています

クラスで:

package Cat;
use 5.010;
use strict;
use Moose;

has 'name',       is => 'ro', isa => 'Str', default => 'Beauty';
#has 'age',       is => 'ro';
has 'diet',       is => 'rw', default => 'fish';
has 'birth_year', is => 'ro', isa=> 'Int',
                  default => 1997;

アプリケーションで:

use 5.010;
use strict;
use Cat;

my $kitty = Cat->new(name => 123, diet => 'Sea food', 
                     birth_year => 'nineteen ninety seven');
say 'I have a kitten named ', $kitty->name(), ' eats ', $kitty->diet(),
    ' birth at ', $kitty->birth_year();

出力:

I have a kitten named 123 eats Sea food birth at nineteen ninety seven
Press any key to continue . . .

タイプチェックを強制しません。

編集:完全なコード、残りのコードはPadreによって生成されます、私はそれを削除していません。パドレは末尾に1を追加しました;:

package Cat;
use 5.010;
use strict;
use Moose;

has 'name',       is => 'ro', isa => 'Str', default => 'Beauty';
#has 'age',       is => 'ro';
has 'diet',       is => 'rw', default => 'fish';
has 'birth_year', is => 'ro', isa=> 'Int',
                  default => 1997;
sub age
{
    my $self = shift;
    my $year = (localtime)[5] + 1900;

    return $year - $self->birth_year();
}

=pod

=head1 NAME

Cat - My author was too lazy to write an abstract

=head1 SYNOPSIS

  my $object = Cat->new(
      foo  => 'bar',
      flag => 1,
  );

  $object->dummy;

=head1 DESCRIPTION

The author was too lazy to write a description.

=head1 METHODS

=cut

use 5.006;
use strict;
use warnings;

our $VERSION = '0.01';

=pod

=head2 new

  my $object = Cat->new(
      foo => 'bar',
  );

The C<new> constructor lets you create a new B<Cat> object.

So no big surprises there...

Returns a new B<Cat> or dies on error.

=cut

sub new {
    my $class = shift;
    my $self  = bless { @_ }, $class;
    return $self;
}

=pod

=head2 dummy

This method does something... apparently.

=cut

sub dummy {
    my $self = shift;

    # Do something here

    return 1;
}

1;

=pod

=head1 SUPPORT

No support is available

=head1 AUTHOR

Copyright 2011 Anonymous.

=cut
4

1 に答える 1

2

問題は、newCat.pmの64行目で定義されています。 Mooseメソッドを提供するnewので、独自に作成する必要はありません。newそのメソッドを削除すると、正常に機能します。

「あはは」をトリガーするはずだったもう1つのビット。それは

use 5.006;
use strict;
use warnings;

これは、Cat.pmコードの途中にあります。

PODドキュメントを使用する場合は、コードをドキュメント内に埋め込む必要があります(ドキュメントがインラインコメントを拡張できるようにします)。または、すべてのコードを上に配置し、下に明確なPODを作成する必要があります。いずれにせよ、一貫性は将来この種の問題を回避するのに役立ちます。

于 2011-06-22T07:41:06.473 に答える