Map[String, Float] を使用するコードがたくさんあります。だからやりたい
type DocumentVector = Map[String, Float]
...
var vec = new DocumentVector
しかし、これはコンパイルされません。メッセージが表示されます:
trait Map is abstract; cannot be instantiated
[error] var vec = new DocumentVector
わかりました、ここで何が起こっているのか理解できたと思います。Map は具象クラスではなく、() を介してオブジェクトを生成するだけです。だから私はできる:
object DocumentVector { def apply() = { Map[String, Float]() } }
...
var vec = DocumentVector()
少しぎこちなくても、それはうまくいきます。しかし、今は型を入れ子にしたいと思っています。私は書きたい:
type DocumentVector = Map[String, Float]
type DocumentSetVectors = Map[DocumentID, DocumentVector]
しかし、これは同じ「インスタンス化できない」問題を引き起こします。だから私は試すことができます:
object DocumentVector { def apply() = { Map[String, Float]() } }
object DocumentSetVectors { def apply() = { Map[DocumentID, DocumentVector]() } }
しかし、DocumentVector は実際には型ではなく、apply() メソッドを持つ単なるオブジェクトであるため、2 行目はコンパイルされません。
ここで基本的な何かが欠けているように感じます...