Listen

Description

第95章へようこそ。

今日のテーマは「型を消す抽象」です。

ジェネリクスは「どんな型でも受け入れる」仕組みでした。

しかしジェネリクスでは、コンパイル時にすべての型が確定します。

コンパイラは、使われる型ごとに専用のコードを生成する。

これが単相化、モノモーフィゼーションです。

では、コンパイル時に型が決まらない場合はどうするか。

設定ファイルの内容に応じて、異なる型のオブジェクトを返したい。

プラグインのように、実行時にどの型が来るか分からない状況を扱いたい。

ここで登場するのが、トレイトオブジェクトです。

トレイトオブジェクトは、具体的な型を消して、トレイトだけを残す。

「この値はDrawを実装している」という情報だけで値を扱う。

型の名前は消える。残るのは、能力の約束だけ。

これがdyn Traitです。