クラスの既存のインスタンスから型を取得できます。
class C {
type someType = Int
}
val c = new C
type t = c.someType
または、オブジェクトをインスタンス化せずに型に直接アドレス指定することもできます。C#someType
この形式は、中間変数を作成するスペースがない型式に非常に役立ちます。
コメントで提案されたように、いくつかの説明を追加します。
免責事項: Scala の型システムがどのように機能するかについて、私は部分的にしか理解していません。ドキュメントを何度か読もうとしましたが、断片的な知識しか抽出できませんでした。しかし、私は scala で豊富な経験を持っており、個々のケースでのコンパイラの動作をうまく予測できます。
#
型プロジェクションと呼ばれる型プロジェクションは、.
すべての型式で scala が暗黙的に両方を使用することで、通常の階層型アクセスを補完します。
scala リファレンスは、そのような目に見えない変換の例を示しています。
t ə.type#t
Int scala.type#Int
scala.Int scala.type#Int
data.maintable.Node data.maintable.type#Node
.type
ご覧のとおり、型射影の些細な使用法はすべて、実際にはオブジェクトではなく型 (つまり return with ) で機能します。主な実際の違い (私は定義が苦手です) は、オブジェクト型はオブジェクト自体と同様に一時的なものであるということです。その型は、抽象クラス型の継承などの適切な状況で変更される場合があります。対照的に、型の型 (型射影の定義) は太陽と同じくらい安定しています。scala の型 (クラスと混合しないでください) はファーストクラスの市民ではなく、それ以上オーバーライドすることはできません。
型式を配置するのに適したさまざまな場所があります。また、安定型のみが許可されている場所もあります。したがって、基本的に型射影は、型の用語に対してより一定です。