プライベートコンストラクタを持つクラスに暗黙のパラメータを追加したいと思います。ここでは簡単な例として:プライベートコンストラクタと暗黙のパラメータを持つスカラクラス
class A[T] private(a:Int){
def this()=this(0)
}
私はポン引きに発注[T]とTへマイライブラリパターンを適用したい場合、私はそうのようにバインドされ(非推奨)ビューを使用する必要があります:
をclass A[T <% Ordered[T]] private(a:Int){
def this()=this(0)
}
これは機能します。しかし、廃止された構文的な砂糖を避けるために、暗黙のパラメータをクラスに渡したいと思います。残念ながら、これは私はおそらく間違って何かやっているところである:上記のコードについて
class A[T] private(a:Int)(implicit conv:T=>Ordered[T]){
def this()=this(0)
}
を、コンパイラは次のエラーを生成します。
error: No implicit view available from T => Ordered[T].
def this()=this(0)
間、私は直接のような暗黙のパラメータを渡すしようとした場合そう:
class A[T] private(a:Int)(implicit conv:T=>Ordered[T]){
def this()=this(0)(conv)
}
私はこれを取得:
error: not found: value conv
def this()=this(0)(conv)
この場合、どのように暗黙的なパラメータを渡しますか?
EDIT:もう少し実験を重ねると、暗黙的なパラメータでコンストラクタを再定義することが問題になるようです。コンストラクタが非公開であるという事実ではありません。
、あなた自身の質問に答えることは完全に可能です。 –
@Krleそれは私の本でかなり大きなコードのにおいです。 1つのコードを適切にインデントするのはいい場所ですが、私はそれをやりません。代わりに、私はこのオーバーロードされたコンストラクタを、同じ暗黙的な、コンパニオンの適用メソッドに移動します。 – flavian
@flavianありがとう、私はそれをやるでしょう。なぜ、あなたは詳しく説明できますか?インデントおよびコンパニオンオブジェクトの両方... – Krle