擬似クラスとは、初期化ファイル群の中で、 クラスと似たシステムを提供する機能のことです。 実際に使用する場合、class.cy における class マクロと、 initializers.cy のイニシャライザ、 object.cy の new メソッドを組み合わせて使います。
class.cy の class マクロの使い方は、 class.cy におけるグローバル変数の説明 や、サンプルを見てください。
object.cy においては、クラスのインスタンス化に当たる new メソッドが 定義されています。 このメソッドは、クラスとして使われているオブジェクトのチャイルドを作成し、 そのチャイルドに init というメッセージを送ってから返します。 つまり、クラスの作成時に init というメソッドを定義しておけば、 それをイニシャライザとして使えます。引数は任意のものを取ることができます。
initializers.cy においては、 オブジェクト一覧にかかれたペアレントのうち、 チャイルドの作成においてスロットの初期化が必要なものの イニシャライザが定義されています。 これにより、ペアレントに new メッセージを送ることで、 スロットが初期化されたチャイルド(つまり、インスタンス)を得ることができます。 具体的には、次のようになります。
# スロット receiver に 1, message に max, args に &(2, 3) がセットされる recv = 1 msg = 'max args = &(2, 3) m = Messenger.new(recv, msg, args) say(m) #=> 1.max(2, 3) |
多くの場合、これらは準クオートによって代用できます。 例えば、Porter.new(callee, args) とする代わりに、 `(?callee)(?*args) と書くことができます。 どちらを選ぶかは、使う人の自由です。 ただし、上の messenger の例では、メッセージにアンクオートが使えないため、 準クオートでは表現できません。