オブジェクトの強制変換と複製

(Coercing and Copying Objects)

これらの関数はオブジェクトの浅いコピー(shallow copies)の実行、およびオブジェクトを 他のクラス(インスタンス)に強制変換するために用いられる。

as   class object   =>  instance	[Generic Function]
asobjectclass(のインスタンス)に強制変換する。 すなわち、classのインスタンスでobjectと同じ内容を持つものを返す。

もしも、objectが既にclassのインスタンスなら、変更されずに返される。

数値型の間、整数と文字の間、文字列とシンボルの間、コレクション型の間では既定義の メソッドにより強制変換ができる。これ以外のクラスでは(強制変換の)メソッドは定義されて いない。

コレクション型の間で変換を行うとき、新しいコレクション(返されたオブジェクト)は 元のコレクション(引数のobject)と同じ個数の要素を持つ。変換前、変換後のクラスが ともに<sequence>の部分型であれば、要素は同じ順序となる。個々の要素も また変換を受ける可能性がある。

shallow-copy  object => new-object    [Generic Function]
shallow-copyobjectと同じ内容を持つ新しいオブジェクトを返す。内容は コピーされたものではなく、objectに含まれているのと同じオブジェクト達である。

Dylanはコレクションをコピーするためのメソッドを持つ。<collection>の メソッドはobjectでのclass-for-copy(を呼び出した結果)に対して makeを呼び、新しいオブジェクトを作る。これ以外のクラスについてはプログラマが メソッドを用意しなければならない。

class-for-copy  object => class     [Generic Function]
class-for-copyは引数の変異可能(mutable)なコピーを作成するための適当な コレクションクラスを返す。既に変異可能なコレクションクラスに対しては、一般に そのコレクションクラス自身が最も適当である。したがって、class-for-copy<object>メソッドを用いることができる。列に対するclass-for-copyの 値は<sequence>の部分クラスでなければならなず、explicit-key-collectionに 対するclass-for-copyの値は<explicit-key-collection>の部分クラス でなければならない。何れの場合にもclass-for-copyの値は変異可能なコレクションで なければならない。
◆変異可能コレクションとは変更できるコレクションのことである。コレクションの章の 変異可能コレクションの節を見よ。

目次 索引 クラス(章見出し)、 <type>, <class>, <singleton> クラス (次節)