Gauche:MOP

Gauche:MOP

yamasushi(2013/04/21 03:27:29 UTC)ここに、gaucheに特化したようなmopの情報をまとめることにします。


"Metaobject protocol"(MOP)ってなに?

関連ファイル

概要

解説

チュートリアル

応用

スロットアクセスの伝播

GaucheRefj:gauche.mop.propagate GaucheRefe:gauche.mop.propagate

シングルトン

GaucheRefj:gauche.mop.singleton GaucheRefe:gauche.mop.singleton

Validator付きスロット

GaucheRefj:gauche.mop.validator GaucheRefe:gauche.mop.validator

仮想スロットに似ていますが、validatorを持つスロットはインスタンス内に実際に 値を格納している点が異なります。

このモジュールはまた、スロットのアクセスをメタオブジェクトプロトコルを使って カスタマイズする例でもあります。この機能は20行ほどのコードで実現されています。

Scheme:MOP:InstancePool Gauche:MOP:InstancePool

Scheme:MOP:パラメタライズドクラス

目的
「文字列のみを要素に持つリスト」とか、 「整数のみを要素に持つベクタ」とかいうクラスが欲しいことがたまにある。

強い型付き言語だとこういうクラスを多用するが、 Schemeではそのへんは運用で何とかしてしまう場合が多い。 しかし、規模が大きくなってきてデータの境界条件をきちんとマネージしたい 場合や、メタデータを用いていろいろやりたい場合には、型が「何でも有り」 だと困ることもある。

Scheme:MOP:ProfiledGeneric

その他

イディオム

Tags: OOP, MOP

More ...