オブジェクトは型が定義されOた特性を拡張します。T1C
object で定義されたT1静的データ構造を操作したい。しかし、コンパイラは不平を言い続けますstackO
T1.this.C を検出したタイプの不一致、OC が必要
コードは次のようになります。
trait T1 {
case class C(i: Int, s: String)
def dumbAdd(i: Int, s: String) = {
O.stack.push(C(i, s)) // type mismatch error goes here.
}
}
object O extends T1 {
var stack: Stack[C] = new Stack[C]
}
私は混乱しています...OわからないCので、 のものと同じタイプである必要がありT1ます。ここで何が欠けていますか?どうすればやりたいことができますか?
アップデート
Cobjectに入れる1つの提案に基づいていますT1が、私の実際の例では、オブジェクトT1は trait で定義された型にアクセスできませんT1。削減された問題は次のとおりです。
trait T1 {
abstract sealed class S
case class SC extends S
def dumbAdd(i: Int, s: String) = {
O.stack.push(C(i, s))
}
}
object T1 {
case class C(i: Int, s: String)
def tryASC {
val scc = SC() // Here the compiler says not found value SC
}
}
object O extends T1 {
var stack: Stack[C] = new Stack[C]
}