これが基本的な例です。既存のシーケンスを使用するか、複数のパラメーターを使用するかの2つの異なる方法でクラスを初期化する機能が必要であることをscalaに認識させることができません。
私が受け取るエラーは次のとおりです。
二重定義:メソッドapply:(params:Int *)chorle.scala.tests.MultiParamとメソッドapply:(pList:
Seq [Int])chorle.scala.tests.9行目のMultiParamは、消去後に同じタイプになります:(params: Seq)chorle.scala.tests.MultiParam
どちらがいいですか、ここで何が起こっているのかわかります-コンパイル後、両方の関数が同じヘッダー署名になります。ただし、実際には同じようには機能しません。apply(Seq)バージョンしかない場合は、apply(1,2,3)を呼び出すことはできません。apply(seq)を呼び出すことはできません。逆に。実際の関数呼び出しにパッチを適用するさまざまな方法を知っていますが、これに適切に対処し、クラスで1回だけ行うにはどうすればよいですか?ありがとうございました!
class MultiParam protected (pList:Seq[Int])
object MultiParam {
def apply(pList:Seq[Int]): MultiParam = new MultiParam(pList)
def apply(params: Int *): MultiParam = new MultiParam(params)
}