Hatena::Groupdann

dann's blog このページをアンテナに追加 RSSフィード

Fork me on GitHub

2008-08-09

MooseX::Storage::Format::Storable でJavaのSerializableっぽくオブジェクトのシリアライズ

| MooseX::Storage::Format::Storable でJavaのSerializableっぽくオブジェクトのシリアライズ - dann's blog を含むブックマーク はてなブックマーク - MooseX::Storage::Format::Storable でJavaのSerializableっぽくオブジェクトのシリアライズ - dann's blog MooseX::Storage::Format::Storable でJavaのSerializableっぽくオブジェクトのシリアライズ - dann's blog のブックマークコメント

以下のように

with Storage('format' => 'Storable');

MooseのRoleをconsumeすると、そのクラスのオブジェクトをserialize, deserializeできるようになります。

JavaのSerializable interfaceをimplementsするような感じでつかえるのはいいですね。

package Point;
use Moose;
use MooseX::Storage;

with Storage( 'format' => 'Storable' );

has 'x' => ( is => 'rw', isa => 'Int' );
has 'y' => ( is => 'rw', isa => 'Int' );

1;

package main;
use Data::Dumper;
use Perl6::Say;
my $p             = Point->new( x => 10, y => 10 );
my $storable_data = $p->freeze();
my $p2            = Point->thaw($storable_data);
say $p2->x;

# FormatにはJSONなどもあるので、MooseのオブジェクトをViewに渡す際にJSON化して使うなんていうのもいいかもしれません。