我对 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))
}
但是当我尝试使用 pop 时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()
}
}
这是我尝试使用 pop 时的确切错误
interpreter.scala:127: error: type mismatch;
found : ScalaObject
required: cs162.miniJS.values.Storable
pc.pop()