私はScalaにまったく慣れていないので、これに関する明確な情報を見つけることができません。
私はこのオブジェクトを持っています:
object pc {
val stack = new Stack[Lattice]
def top(): Lattice = stack.top
def pop() = stack.pop
def push(lev: Lattice) =
if (stack.isEmpty) stack push lev
else stack.push(lev(pc.top))
}
しかし、を使用してポップしようとするとpc.pop()
、型の不一致が発生し、型は見つかりましたが、プログラム内の別のクラスから型を返す必要がありますLattice
。呼び出しの例:
case If(e, t1, t2) ⇒ {
val v = eval(e)
if ( v.T ) {
pc.push(v.myLevel.⊔(pc.top()))
eval( t1 )
pc.pop()
} else {
pc.push(v.myLevel.⊔(pc.top()))
eval(t2)
pc.pop()
}
}
これが私がポップを使おうとしたときの正確なエラーです
interpreter.scala:127: error: type mismatch;
found : ScalaObject
required: cs162.miniJS.values.Storable
pc.pop()