Moose::Coockbook
各Cookbookのレシピの目次
Mooseの基礎
Moose::Cookbook::Basics::Recipe1
シンプルなPoint のMooseによる実装例。
attribute とsubclass のデモ。
Moose::Cookbook::Basics::Recipe2
シンプルな銀行口座の例。もう少し複雑なクラス。
サブクラス内のメソッドとmodifier のデモ。
Moose::Cookbook::Basics::Recipe3
ちょっといい加減な二分木の例。
いくつかのattributeの機能のデモ。型(type), weak reference, predicate(どのオブジェクトに属しているのか), 初期値、それにattributeのアクション(''uction''と書かれているが''action''のTYPO?)
Moose::Cookbook::Basics::Recipe4
副型(subtype)と単純な会社クラス構造の構築。
独自の型の作成、 ''BUILD''メソッド(コンストラクタ)、 サブクラスでのオーバーライドの使い方を紹介。
Moose::Cookbook::Basics::Recipe5
副型(subtype)と強制(coercion)をつかったRequestクラス。
型の強制(coercion)を含む型についての追加の例
Moose::Cookbook::Basics::Recipe6
内部引数(?、 The Augment/inner)についての例
''augment'' method modifireのデモ。メソッドオーバーライドのような方法を提供する
Moose::Cookbook::Basics::Recipe7
immutable を使ってMooseを高速化。
アクセサやオブジェクトの動作を劇的に高速化するimmutable class を作る
Moose::Cookbook::Basics::Recipe8
トリガを使った複合連結の管理(TODO)
(まだ説明がありません)
Moose::Cookbook::Basics::Recipe9
Builderメソッドとlazy_build
builder機能はattributeの初期値に継承可能でroleを構成できる機能を提供する
Moose::Cookbook::Basics::Recipe10
演算子のオーバーロード、副型(subtype),強制(coercion)
演算子のオーバーロード、強制、副型を目の色が決定される仕組みをモデルにしてデモします。
Moose::Cookbook::Basics::Recipe11
BUILDとBUILDARGS(TODO)
この機能を解説するちょうどいいデモを求めています!!
MooseのRole
以下のレシピはどのようにしてMooseのRoleを使うかを解説しています。
Moose::Cookbook::Roles::Recipe1
Moose::Roleの例
trait とか mix-in などとして知られている role についてのデモ。 role は コードの再利用に関して サブクラスとは別のアプローチになる方法を提供します。
Moose::Cookbook::Roles::Recipe2
より進んだ role の使いかた - メソッドの外部定義(exclude)およびエイリアス(aliasing)
roleの一部分をクラスのなかに含めたいと思うことがあるでしょう。また,roleの全体を含めたいと思ったときにいくつかのメソッドがもともとあるメソッドと衝突することがあるかもしれません。メソッドの外部定義やエイリアスを使用すればこのような問題に対処できます。
Moose::Cookbook::Roles::Recipe3
実行時role制御
(まだ説明がありません)
Meta Moose
以下のレシピは Mooseを使ったオブジェクトシステムの拡張をおこなうための meta class の書き方を解説しています。
Moose::Cookbook::Meta::Recipe1
metaの世界へようこそ(どうしてmetaが必要なの?)
もし、どうしてこのmetaなるものが面白いのか、何を心配すべきなのかと考えているのであれば、このレシピを読んでください。
Moose::Cookbook::Meta::Recipe2
meta-attribute, ラベルつきattribute
Mooseを拡張するひとつの方法は attribute metaclass を使う方法です。attribute metaclass は has によるattribute を拡張し、追加のattributeの機能を使えるようにします。
Moose::Cookbook::Meta::Recipe3
attribute trait を使ったラベルの実装
拡張されたMoose の attribute metaclass は様々な機能をもたらします。ただし、attributeはひとつのmetaclassしか持つことはできません。roleをattribute metaclassに適用することによって、attributeの機能を構成することができます。
Moose::Cookbook::Meta::Recipe4
metaclass への ''table'' attribute の追加
あなたが作成したclassにより多くの情報を詰め込みたいなら、 "Moose::Meta::Class" を拡張しましょう。方法はいたって簡単ですが、もうちょっと砂糖を入れたいと思ったときは Moose::Cookbook::Extending::Recipe2を読んでください。
Moose::Cookbook::Meta::Recipe5
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::Cookbook::Extending::Recipe1
Mooseの拡張の概要
Mooseを拡張するには、いくつもの方法があります。このレシピでは、それぞれの方法について概要を示し、その方法がどういう場合に適切かを示します。
Moose::Cookbook::Extending::Recipe2
基本object class roleの構築
多くの基本object class拡張はroleによって構築することができます。この例ではclassに抽象的なMooseX::Debuggingモジュールを使った基本object class をデバッグするroleを示します。
Moose::Cookbook::Extending::Recipe3
alternate base object class の構築
Mooseを使っているとmeta extensionを持った、alternate(代理) base object classを使いたいと思うようなことがあるかもしれません。あるいは、"extends 'MyApp::Bsse'"とtypeすることなしに別の機能を持った同じような class を使いたいと思うようなことがあるかもしれません。
Moose::Cookbook::Extending::Recipe4
Moose.pmのような、Mooseスタイルの砂糖
このレシピでは、"Moose.pm"の置き換え方法を示します。"MooseX"モジュールAPIのようなもの、特にmetaclassやbase object classのデフォルト動作を変更したい場合など。
おつまみ
Moose::Cookbook::Snack::Keywords
Moose::Cookbook::Snack::Types
- Moose::Cookbook::Basics::Recipe1 - The (always classic) Point example. - search.cpan.org
- Moose::Cookbook::Basics::Recipe2 - A simple BankAccount example - search.cpan.org
- Moose::Cookbook::Basics::Recipe3 - A lazy BinaryTree example - search.cpan.org
- Moose::Cookbook::Basics::Recipe4 - Subtypes, and modeling a simple Company class hierarchy - search.cpan.org
- Moose::Cookbook::Basics::Recipe5 - More subtypes, coercion in a Request class - search.cpan.org
- Moose::Cookbook::Basics::Recipe6 - The augment/inner example - search.cpan.org
- Moose::Cookbook::Basics::Recipe7 - Making Moose fast with immutable - search.cpan.org
- Moose::Cookbook::Basics::Recipe9 - Builder methods and lazy_build - search.cpan.org
- Moose::Cookbook::Basics::Recipe10 - Operator overloading, subtypes, and coercion - search.cpan.org
- Moose::Cookbook::Roles::Recipe1 - The Moose::Role example - search.cpan.org
- Moose::Cookbook::Roles::Recipe2 - Advanced Role Composition - method exclusion and aliasing - search.cpan.org
- Moose::Cookbook::Meta::Recipe1 - Welcome to the meta world (Why Go Meta?) - search.cpan.org
- Moose::Cookbook::Meta::Recipe2 - A meta-attribute, attributes with labels - search.cpan.org
- Moose::Cookbook::Meta::Recipe3 - Labels implemented via attribute traits - search.cpan.org
- Moose::Cookbook::Meta::Recipe4 - Adding a "table" attribute to the metaclass - search.cpan.org
- Moose::Cookbook::Meta::Recipe5 - The "table" attribute as a metaclass trait - search.cpan.org
- Moose::Cookbook::Extending::Recipe1 - Moose extension overview - search.cpan.org
- Moose::Cookbook::Extending::Recipe2 - Providing a role for the base object class - search.cpan.org
- Moose::Cookbook::Extending::Recipe3 - Providing an alternate base object class - search.cpan.org
- Moose::Cookbook::Extending::Recipe4 - Acting like Moose.pm and providing sugar Moose-style - search.cpan.org
- Moose::Cookbook::Snack::Keywords - Restricted keywords in Moose - search.cpan.org
- Moose::Cookbook::Snack::Types - Snippets of code for using Types and Type Constraints - search.cpan.org
- Mooseのお勉強(1) (あるソフトウェアエンジニアの戯言)