オブジェクトは型が定義されO
た特性を拡張します。T1
C
object で定義されたT1
静的データ構造を操作したい。しかし、コンパイラは不平を言い続けますstack
O
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
ます。ここで何が欠けていますか?どうすればやりたいことができますか?
アップデート
C
objectに入れる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]
}