0

私は Scala の初心者で、クラスとコンパニオン オブジェクトを含む Scala プログラムを持っており、使用される型エイリアスを使用したいと考えています。

  1. クラスのメソッドを定義します。
  2. また、クラス外でエイリアスを使用したい。そのためには、コンパニオン オブジェクトでエイリアスを定義し、コンパニオン オブジェクトからエイリアスをインポートすると便利です。また、コンパニオン オブジェクトでいくつかの Implicit を定義しているので、これは当然のことです。

具体的なコードはhttps://github.com/juanrh/Surus/blob/1cfd55ed49c4d1b22e53babe07bcf44fd74e3072/src/main/scala/org/surus/spark/SurusRDDFunctions.scalaで入手できます。型エイリアスは PMMLPrediction で、クラスは SurusRDDFunctions です。現在、コードは機能しますが、クラスとコンパニオンの両方でエイリアスを定義しましたが、これはあまり良くありません。クラス内のエイリアスの定義を削除すると、クラスはそれを見つけることができなくなります。これは奇妙に思えます。だから私はおそらく何か間違ったことをしていると思います、何かアイデアはありますか?

ご協力いただきありがとうございます。

ご挨拶、

ファン

4

1 に答える 1

3

コンパニオン オブジェクトが与えられた場合

object Example {
  type MyString = String
}

コンパニオンオブジェクトを介してタイプに直接アクセスできます

class Example (val name: Example.MyString) { }

または、コンパニオン オブジェクトからインポートすることによって

class Example {
  import Example._

  val name: MyString = "example"
}
于 2015-02-15T20:58:45.107 に答える