トミールの技術系日記

忍たまはじめました

MooseとMouse(Any::Moose)の違い(今ちがわないようだ)

2009/10/1 たぶん今MooseもMouseと同じ挙動になっている(has定義必須) 

    • -

Mooseはhasで定義してないやつも、bressされてるハッシュに残すけど、Mouse(Any::Moose)はhasで定義してるやつしか残らないのでちゅうい

package Foo;
use Any::Moose;
has 'foo' => ( is => 'rw );

my $foo = Foo->new( foo => "foooo", bar => "baaaar");

use Data::Dump 'dump'; warn dump $foo;

bless({
  foo => "foooo",
}, "Foo");

みたいな。

Mooseもたまたまかもしれないから、ちゃんといるものは定義しよう。
ブレスオブジェクトに残しておきたい場合は、

sub BUILD {
    my ($self, $opt) = @_;
    $self->{$_} ||= $opt->{$_} for keys %$opt;
}

とか。