Scala 2.13 以降、早期初期化子は非推奨になりました。
(他のコンストラクター引数に基づいて) 計算され、完全にプライベートである必要があるスーパークラスに渡す値を作成するにはどうすればよいので、クラスの初期化では渡すことができませんか?
私が今日までに行ったことの例は次のとおりです。
abstract class JmsServiceInitialiser(val qConfig: Config)
class ActiveMQService(
val configA: ConfigElement,
val configB: ConfigElement
) extends {
val config: Config = {
println(configA)
println(configB)
...
configA + configB
}
} with JmsServiceInitialiser(config)
(ソースコードを共有できないため、これは偽のクラス名を使用した単なるサンプルです)
特性を定義する場合、クラス コンストラクターで値を公開してオーバーライドせずに値をスーパークラスに渡す方法を知りません。
Dotty (Scala 3) では trait パラメーターが許可されていますが、Scala 2.13 では許可されていません。
解決策を知っている場合は、説明付きのスニペットを提供してください! ありがとう!