RPGのルールでMooseを学んでみる。「その1:キャラ名を決めよう」

RPGのルールでMooseを学んでみる。「その1:キャラ名を決めよう」

 RPGといったらまずはキャラクターメイキングです。

 キャラクターメイクといったらまずはキャラ名の決定です。

 ――というわけでキャラクター名を定義してみた。

package TG::PC;
use utf8;
use Any::Moose;

has personalname => (
    is  => 'ro',
    isa => 'Str',
);

has familyname => (
    is  => 'ro',
    isa => 'Str',
);

has nickname => (
    is  => 'ro',
    isa => 'Str',
);

has nameorder => (
    is  => 'ro',
    isa => 'Bool',
);

sub fullname {
    my $self = shift;
    $self->nameorder?
        $self->familyname . $self->personalname:
        $self->personalname . '・' . $self->familyname;
}

 firstname / lastnameじゃないのはフルネームの表記に「姓名」「名・姓」を選べるようにしたかったから。

 あ、fullnameのところは

has fullname => (
    is  => 'ro',
    lazy => 1,
    builder => '_build_fullname',
);
sub _build_fullname {
    my $self = shift;
    $self->nameorder?
        $self->familyname . $self->personalname:
        $self->personalname . '・' . $self->familyname;
};

――のようにしたほうがMooseっぽいのかな?