moose

hasの定義を取得する

hasで定義したメソッドのオーバーライドについて - Unknown::Programmingの続きというか。さて、先日の記事でhasで宣言する時にアクセサの先頭に+をつければ特定のものだけを上書きできることを知ったのですが、そんな便利なものがあるとは知らずに(MooseのP…

hasで定義したメソッドのオーバーライドについて

defaultだけ上書きとかできないのかな? package Foo; use Moose; has foo => ( is => 'rw', lazy => 1, default => sub { 100 } ); package Bar; use Moose; extends qw(Foo); # isとlazyを引き継いで欲しい! has foo => ( default => sub { 200 } ); 派生…

lazyなdefault再呼び出し

metaクラスからたどって直接呼び出した方がわかりやすいんではないかと思ったりしました。 package Foo; use Moose; has hoge => ( is => 'rw', lazy => 1, default => sub { 100 }, ); __PACKAGE__->meta->make_immutable; 1; package main; use strict; us…

Moose使ってると初期処理って殆どいらんねって思えてきた

Moose使い始めの頃はBUILD用意してそこで初期処理してたんだけど、慣れてくるとhasのlazyとdefaultでその殆どを賄える事に気付いた。よくよく考えたら初期処理って引数のハッシュを解析してそのキー毎に特殊な処理をさせるだけが多いのでhasで定義しとけばそ…

Mooseでdefaultをもう一度呼ばせる方法

package Foo; use Moose; has aaa => ( is => 'rw', lazy => 1, default => sub { 100 }, ); no Moose; __PACKAGE__->meta->make_immutable; 1; package main; use Perl6::Say; use Foo; my $foo = Foo->new; say $foo->aaa; # 100 delete $foo->{aaa}; # de…

MooseにDBIx::Class型を用意したいとか。

DBIx::Class型というかsearch等で取ってきたDBIx::Class::Rowと言えばいいのかな。雰囲気としてはこんな感じの package Foo; use Moose; use Moose::Util::TypeConstraints; use MySchema; my $schema = MySchema->connection($info); class_type 'MySchema:…

Mooseのwithってクラス名を省略できないのかな?

ちょっとした疑問。Mooseでwithするときに、例えば package MyClass; use Moose; with qw{ FooFooFoo::BarBarBar::BazBazBaz::Role::Base FooFooFoo::BarBarBar::BazBazBaz::Role::Hoge FooFooFoo::BarBarBar::BazBazBaz::Role::Muge FooFooFoo::BarBarBar::…

MooseX::Types::Path::Classが地味に便利

何かしらのパスをオブジェクトに持たせる事は往々にしてある。でそのオブジェクトがMooseで実装されているのであればMooseX::Types::Path::Classを使うのが地味にすんげー便利。 package MyObject; use Moose; use MooseX::Types::Path::Class qw{File Dir};…

Moose触ってみるよ!

触るんかい!と、言うことで使ってないうちからあれこれ言うのは愚の骨頂ってことでちょっち実務で使ってみるね!少しだけだけど。でいつもの事ながら組み込むとなればやはり気になるのがパフォーマンス。もう散々書かれてるけど自分で試さないと気がすまな…

Moose触ってみてない!

触ってないのかよ!と、いうことで調べるだけ調べてまったくMoose使ってない僕がMooseについて思うところはぶっちゃけあんまり好きじゃあないという結論。Class::Stdばりに興味が持てないんだよなぁ・・・。コレはほんとーに個人的な好き嫌いの問題なんだけ…