各Cookbookのレシピの目次
Mooseの基礎
シンプルなPoint のMooseによる実装例。
attribute とsubclass のデモ。
シンプルな銀行口座の例。もう少し複雑なクラス。
サブクラス内のメソッドとmodifier のデモ。
ちょっといい加減な二分木の例。
いくつかのattributeの機能のデモ。型(type), weak reference, predicate(どのオブジェクトに属しているのか), 初期値、それにattributeのアクション(''uction''と書かれているが''action''のTYPO?)
副型(subtype)と単純な会社クラス構造の構築。
独自の型の作成、 ''BUILD''メソッド(コンストラクタ)、 サブクラスでのオーバーライドの使い方を紹介。
副型(subtype)と強制(coercion)をつかったRequestクラス。
型の強制(coercion)を含む型についての追加の例
内部引数(?、 The Augment/inner)についての例
''augment'' method modifireのデモ。メソッドオーバーライドのような方法を提供する
immutable を使ってMooseを高速化。
アクセサやオブジェクトの動作を劇的に高速化するimmutable class を作る
Moose::Cookbook::Basics::Recipe8
トリガを使った複合連結の管理(TODO)
(まだ説明がありません)
Builderメソッドとlazy_build
builder機能はattributeの初期値に継承可能でroleを構成できる機能を提供する
演算子のオーバーロード、副型(subtype),強制(coercion)
演算子のオーバーロード、強制、副型を目の色が決定される仕組みをモデルにしてデモします。
Moose::Cookbook::Basics::Recipe11
BUILDとBUILDARGS(TODO)
この機能を解説するちょうどいいデモを求めています!!
MooseのRole
以下のレシピはどのようにしてMooseのRoleを使うかを解説しています。
Moose::Roleの例
trait とか mix-in などとして知られている role についてのデモ。 role は コードの再利用に関して サブクラスとは別のアプローチになる方法を提供します。
より進んだ role の使いかた - メソッドの外部定義(exclude)およびエイリアス(aliasing)
roleの一部分をクラスのなかに含めたいと思うことがあるでしょう。また,roleの全体を含めたいと思ったときにいくつかのメソッドがもともとあるメソッドと衝突することがあるかもしれません。メソッドの外部定義やエイリアスを使用すればこのような問題に対処できます。
Moose::Cookbook::Roles::Recipe3
実行時role制御
(まだ説明がありません)
Meta Moose
以下のレシピは Mooseを使ったオブジェクトシステムの拡張をおこなうための meta class の書き方を解説しています。
metaの世界へようこそ(どうしてmetaが必要なの?)
もし、どうしてこのmetaなるものが面白いのか、何を心配すべきなのかと考えているのであれば、このレシピを読んでください。
meta-attribute, ラベルつきattribute
Mooseを拡張するひとつの方法は attribute metaclass を使う方法です。attribute metaclass は has によるattribute を拡張し、追加のattributeの機能を使えるようにします。
attribute trait を使ったラベルの実装
拡張されたMoose の attribute metaclass は様々な機能をもたらします。ただし、attributeはひとつのmetaclassしか持つことはできません。roleをattribute metaclassに適用することによって、attributeの機能を構成することができます。
metaclass への ''table'' attribute の追加
あなたが作成したclassにより多くの情報を詰め込みたいなら、 "Moose::Meta::Class" を拡張しましょう。方法はいたって簡単ですが、もうちょっと砂糖を入れたいと思ったときは Moose::Cookbook::Extending::Recipe2を読んでください。
metaclass trait として実装された ''table'' attribute
この例は 前のレシピで実装した class の metaclass を metaclass trait として実装したものです。
Moose::Cookbook::Meta::Recipe6
immutabilization systemにhookをかける(TODO)
Mooseには ''immutabilization'' といわれる機能があります。''__PACKAGE__->meta()->make_immutable()'' をclass(やattribute, roleなど)を定義したあとに呼び出すことで、Mooseがどのようにしてオブジェクトの生成やattributeへのアクセスなど、そういったものを最適化するかを知ることができます。
metaclassを作成したら、immutabilization systemにhookをかける必要があるかもしれません。これは metaclass class, meta method classや可能ならmeta-instance classなどを含む多くのスポットを横断します。
このレシピはimmutabilize属性の拡張をおこなう方法を示しています。
Moose::Cookbook::Meta::Recipe7
meta-instance(TODO)
(まだ説明がありません)
Mooseの拡張
これらのレシピは更なるMooseの拡張や ''MooseX''モジュールの作成の方法について書かれています。
Mooseの拡張の概要
Mooseを拡張するには、いくつもの方法があります。このレシピでは、それぞれの方法について概要を示し、その方法がどういう場合に適切かを示します。
基本object class roleの構築
多くの基本object class拡張はroleによって構築することができます。この例ではclassに抽象的なMooseX::Debuggingモジュールを使った基本object class をデバッグするroleを示します。
alternate base object class の構築
Mooseを使っているとmeta extensionを持った、alternate(代理) base object classを使いたいと思うようなことがあるかもしれません。あるいは、"extends 'MyApp::Bsse'"とtypeすることなしに別の機能を持った同じような class を使いたいと思うようなことがあるかもしれません。
Moose.pmのような、Mooseスタイルの砂糖
このレシピでは、"Moose.pm"の置き換え方法を示します。"MooseX"モジュールAPIのようなもの、特にmetaclassやbase object classのデフォルト動作を変更したい場合など。
おつまみ
Moose::Cookbook::Snack::Keywords
Moose::Cookbook::Snack::Types